gpt4 book ai didi

c# - ServiceStack 是否支持反向路由?

转载 作者:太空狗 更新时间:2023-10-29 21:23:21 27 4
gpt4 key购买 nike

遵循 REST,建议 API 是可发现的并且应该相互链接。

ServiceStack 是否支持任何类型的反向路由?我在 ASP MVC 中寻找类似 Url.RouteLink 的东西。

最佳答案

这里陈述了一些混合的概念。

  1. 为了努力遵守 REST,您希望在响应中嵌入 URI。
  2. 如何最好地在您的响应中嵌入 URI。您已经假设“反向路由”机制是应该如何完成的。

REST 风格与强类型

我想在这里明确指出,一个并不意味着另一个。一方面,您希望遵循 REST 架构(无论您正在构建什么系统),另一方面,您希望遵循使用类型化 API 的强类型实践,在这种情况下生成外部 URI你的 API。这些风格有些不同,因为 REST 不提倡类型化 API,而是倾向于绑定(bind)到 API 的外部 URI 表面和松散类型的内容类型。虽然强类型语言会建议绑定(bind)到类型化的 API,例如喜欢 end-to-end typed API ServiceStack 支持开箱即用。

在 ServiceStack 中生成强类型 URI

ServiceStack 中没有明确的 ASP.NET MVC“反向路由”概念/功能,但您可以重复使用与 .NET Service Clients 相同的功能。用于生成和使用用户定义的自定义路由。要使用它,您需要在 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

或者如果您只想要绝对 Url,您可以使用 ToAbsoluteUri 扩展方法:

var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();

关于c# - ServiceStack 是否支持反向路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com