加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 在ServiceStack上的Html5 pushstate Urls

发布时间:2020-12-17 07:58:08 所属栏目:安全 来源:网络整理
导读:目前我们在ServiceStack的根目录中使用default.cshtml视图来为我们的AngularJS单页面应用程序提供服务. 我想要做的是启用对html5 pushstate的支持(所以URL中没有哈希),但到目前为止我发现的唯一示例涉及使用通配符路由依赖MVC,并将ServiceStack基础结构推送
目前我们在ServiceStack的根目录中使用default.cshtml视图来为我们的AngularJS单页面应用程序提供服务.

我想要做的是启用对html5 pushstate的支持(所以URL中没有哈希),但到目前为止我发现的唯一示例涉及使用通配符路由依赖MVC,并将ServiceStack基础结构推送到/ api subroute.

我们不能接受MVC依赖,所以我认为我们需要接受:text / html请求我们需要接受任何url并提供我们的根应用程序.我很乐意删除默认的HtmlFormat扩展或覆盖它(我们仍然可以使用它所需的JsonReport内容类型).

我怎样才能最好地接近这个?

Order of Operations维基页面显示了您可以使用的不同挂钩的数量,以注入您自己的自定义行为以及它们的运行顺序.

使用RawHttpHandlers进行高级请求

您可以通过添加Config.RawHttpHandlers来完全绕过ServiceStack,以便在您想要hi-jack的请求上返回IHttpHandler,例如,这就是内置迷你探查器如何填充所有以ssr-开头的文件请求并返回物理文件:

config.RawHttpHandlers.Add((IHttpRequest request) => {
    var file = GetFileNameWithoutExtension(request.PathInfo);
    return file != null && file.StartsWith("ssr-")
        ? new MiniProfilerHandler()
        : null;
}

为不匹配的路由提供回退处理程序

如果要为非匹配路由提供默认处理程序,可以在AppHost.Configure()或插件中注册CatchAllHandlers:

appHost.CatchAllHandlers.Add((string method,string pathInfo,string filepath) =>
{
    return ShouldProvideDefaultPage(pathInfo) 
        ? new RazorHandler("/defaultpage.cshtml")
        : null;
});

使用通配符接受服务中的任何URL

您可以创建虚拟服务并简单地返回相同的单个视图,例如:

[Route("/app/{PathInfo*}")]
public class App {
    public string PathInfo { get; set; }
}

public class MyService : Service 
{
    public object Any(App request)
    {
        return request;
    }
}

使用外卡,此服务将返回视图,例如在/ app开头的任何路线上的/View/App.cshtml,例如:

> / app
> / app /你好
> / app / hello / my / name /是?foo = bar

部分页面支持

由于部分重载与pushstate有关,我还会提到ServiceStack内置支持部分重载.

ServiceStack Docs是一个示例演示,它在支持它的浏览器上使用pushstate,否则它会回退到使用不支持浏览器的整页重新加载.

您可以要求使用?format = text.bare param的部分页面,例如

>整页:http://www.servicestack.net/docs/markdown/about
>部分页面:http://www.servicestack.net/docs/markdown/about?format=html.bare
>部分页面降价:http://www.servicestack.net/docs/markdown/about?format=text.bare

虽然这使用Markdown Razor.在最新的ServiceStack.Razor支持中,您只需访问部分页面:?format = bare

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读