我们有一个角度页面可以访问我们正在生成的宁静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这样的好功能可以指定正确的服务器?
答案 0 :(得分:1)
引用Scott Allen,"从技术上讲,你不应该在api控制器中使用Url属性来生成非webapi链接"。我不是制作宁静的webapi的专家,但如果返回的网址的路由取决于主叫网站的路由,那么它似乎不是一个好的设计。不应该api只返回有关书籍等的信息,并让网站根据该信息构建自己的网址。
无论如何,您声明使用的Url.Link始终返回绝对网址(即http://myWebServiceServer.com/books/book/1)。
如果您坚持要求返回网址,则可以使用可以生成相对网址的Url.Route(即/ books / book / 1)。然后,您的主叫网站可以确定要添加到网址的服务器。