使用客户端地址生成路由

时间:2015-02-16 11:45:12

标签: c# asp.net angularjs asp.net-web-api

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

现在有点棘手的部分,如果退回了一本书,那么每本书都会包含一个自己的链接。

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

问题在于web api我们使用Url.Link来生成href值。这虽然提供服务器地址作为Web服务,而不是请求角度网站。我们希望使用这些引用来自动生成网页本身的链接。但他们显然只是直接链接到网络服务。

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

是否有像Url.Link这样的好功能可以指定正确的服务器?

1 个答案:

答案 0 :(得分:1)

引用Scott Allen,"从技术上讲,你不应该在api控制器中使用Url属性来生成非webapi链接"。我不是制作宁静的webapi的专家,但如果返回的网址的路由取决于主叫网站的路由,那么它似乎不是一个好的设计。不应该api只返回有关书籍等的信息,并让网站根据该信息构建自己的网址。

无论如何,您声明使用的Url.Link始终返回绝对网址(即http://myWebServiceServer.com/books/book/1)。

如果您坚持要求返回网址,则可以使用可以生成相对网址的Url.Route(即/ books / book / 1)。然后,您的主叫网站可以确定要添加到网址的服务器。