加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:23:42 所属栏目:百科 来源:网络整理
导读:在REST之后,建议API是可发现的,并且应该是相互关联的. ServiceStack是否支持任何类型的反向路由?我在ASP MVC中寻找像Url.RouteLink这样的东西. 解决方法 这里有一些混合概念. 在努力尝试遵守REST时,您希望在您的回复中嵌入URI. 如何最好地在您的回复中嵌入U
在REST之后,建议API是可发现的,并且应该是相互关联的.

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

解决方法

这里有一些混合概念.

>在努力尝试遵守REST时,您希望在您的回复中嵌入URI.
>如何最好地在您的回复中嵌入URI.您假设“逆向路由”机制是应该如何完成的.

REST样式与强类型

我想在这里明确提到一个并不意味着另一个.一方面,您希望遵循REST架构(使用您正在构建的任何系统),另一方面,您希望遵循使用类型API的强类型实践,在这种情况下,生成外部URI的你的API.这些是有些对比的样式,因为REST不会提升类型API,而是更喜欢绑定到API的外部URI表面和松散类型的内容类型.虽然强类型语言会建议绑定到类型化的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

或者,如果您只想要Absolute Url,可以使用ToAbsoluteUri Extension方法:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读