使用客户端地址生成路由

Generate routes using client address

我们有一个 angular 页面可以访问我们也在生成的 restful Web 服务。对于网站,为简单起见,我们使路由与 Web 服务的路由相匹配。例如,访问位于 http://myserver.com/books/book/1/chapter/2 的网站将访问 Web 服务中的相同路径。

现在是稍微棘手的部分,如果返回书籍列表,那么每本书都会包含 link 本身。

"links": [
    {
        "rel": "self",
        "href": "http://myserver.com/books/book/1"
    }]

问题出在 web api 我们使用 Url.Link 来生成 href 值。这虽然将服务器地址作为 Web 服务而不是请求 angular 网站。我们想使用这些引用在网页本身上自动生成 links。但他们显然只是 link 直接返回到网络服务。

生成:http://myWebServiceServer.com/books/book/1 理想:http://myWebSiteServer.com/books/book/1

有没有像Url.Link这样可以指定正确服务器的好函数?

引用 Scott Allen 的话,"technically, you shouldn't use the Url property in an api controller to generate non-webapi links"。我不是制作 restful webapi 的专家,但如果 returned url 的路由依赖于调用网站的路由。 api 不应该只是 return 有关书籍等的信息,让网站根据该信息构建自己的 url。

无论如何,Url.Link 您声明您总是使用 return 绝对值 url(即 http://myWebServiceServer.com/books/book/1)。

如果您坚持 returning 一个 url,您可以使用 Url.Route,它可以产生一个相对的 url(即 /books/book/1)。然后,您的调用网站可以确定要添加到 url.

的服务器