在 REST 之后,建议 API 是可发现的并且应该是相互链接的。
ServiceStack 是否支持任何类型的反向路由?我正在寻找类似Url.RouteLink
ASP MVC 的东西。
在 REST 之后,建议 API 是可发现的并且应该是相互链接的。
ServiceStack 是否支持任何类型的反向路由?我正在寻找类似Url.RouteLink
ASP MVC 的东西。
这里陈述了一些混合的概念。
我想在这里明确提到一个并不意味着另一个。一方面,您希望遵循 REST 架构(使用您正在构建的任何系统),另一方面,您希望遵循使用类型化 API 的强类型化实践,在这种情况下生成外部 URI你的 API。这些风格有些不同,因为 REST 不提倡类型化 API,而是更喜欢绑定到 API 的外部 URI 表面和松散类型的 Content-Type。虽然强类型语言会建议绑定到类型化 API,例如端到端类型化 API , ServiceStack 支持开箱即用。
ServiceStack 中没有明确的 ASP.NET MVC“反向路由”概念/功能,但您可以重用.NET 服务客户端用于生成和使用用户定义的自定义路由的相同功能。要使用它,您需要在 DTO 上指定您的自定义路由(即使用[Route]
属性而不是 AppHost 中的流畅 API),例如:
[Route("/reqstars/search", "GET")]
[Route("/reqstars/aged/{Age}")]
public class SearchReqstars : IReturn<ReqstarsResponse>
{
public int? Age { get; set; }
}
var relativeUrl = new SearchReqstars { Age = 20 }.ToUrl("GET");
var absoluteUrl = EndpointHost.Config.WebHostUrl.CombineWith(relativeUrl);
relativeUrl.Print(); //= /reqstars/aged/20
absoluteUrl.Print(); //= http://www.myhost.com/reqstars/aged/20
或者,如果您只想要绝对网址,您可以使用ToAbsoluteUri
Extension 方法:
var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();