gpt4 book ai didi

servicestack - 在 ServiceStack 中生成服务的 URL

转载 作者:行者123 更新时间:2023-12-04 19:15:49 26 4
gpt4 key购买 nike

如何生成 ServiceStack 中定义的特定服务的 URL?

我想在响应 DTO 中包含指向其他端点的完整或相对 URL。 RestServiceBase包含 RequestContext.AbsoluteUri ,但这完全取决于请求。

最佳答案

Reverse Routing

Reverse Routing wiki 中的部分显示了如何在已填充的 上使用扩展方法。请求 DTO 生成相对和绝对 URI:

如果您使用 [Route]元数据属性(与 Fluent API 相反),您将能够仅使用 DTO 生成强类型 URI,让您可以像使用 ToUrl(HttpMethod) 使用 .NET 服务客户端一样在 ServiceStack Web 框架之外创建 URL和 ToAbsoluteUri(HttpMethod) ,例如:

[Route("/reqstars/search", "GET")]
[Route("/reqstars/aged/{Age}")]
public class SearchReqstars : IReturn<ReqstarsResponse>
{
public int? Age { get; set; }
}

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

relativeUrl.Print(); //= /reqstars/aged/20
absoluteUrl.Print(); //= http://www.myhost.com/reqstars/aged/20

邮箱联系方式 演示显示了使用上述反向路由扩展方法到 populate routes for HTML Forms and Links in Razor Views 的示例。 .

其他反向路由扩展方法
new RequestDto().ToPostUrl();
new RequestDto().ToPutUrl();
new RequestDto().ToDeleteUrl();
new RequestDto().ToOneWayUrl();
new RequestDto().ToReplyUrl();

访问 Http 请求

您还可以使用以下命令检查传入的底层 httpRequest:
var httpReq = base.RequestContext.Get<IHttpRequest>();

以及具有以下功能的底层 ASP.NET(或 HttpListener)请求对象:
var aspNetReq = httpReq.OriginalRequest;

它们应该包含更有用的附加属性。

关于servicestack - 在 ServiceStack 中生成服务的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9642337/

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