gpt4 book ai didi

c# - 是否可以在 ASP.NET Web API(类似于 ServiceStack)中定义模型/DTO 上的路由?

转载 作者:行者123 更新时间:2023-11-30 23:24:44 26 4
gpt4 key购买 nike

我非常喜欢 ServiceStack 的一个特性,它专注于 DTO。您根据 DTO 定义路由,并定义接受 DTO 而不是 Controller 的服务。但是,我也想转向 ASP.NET Core。现在它是开源的,我可以看到一种使 DTO 样式方法起作用的方法(使用不同的 Controller 解析器)。有没有人做过这样的事情?

最佳答案

它应该相当简单。您所做的只是根据 DTO 上的属性将路由添加到路由表。举个例子:

[Route("/page/{Id}")]
public class RoutesDemo
{
...
}

然后使用以下代码,您可以从 DTO 获取路由值。请注意,我已将 DTO 作为示例进行了硬编码,但您可能希望扫描程序集中的所有类型以查找特定属性以自动选取它们。

然后使用以下代码,您可以从 DTO 获取路由值:

var type = typeof(RoutesDemo);
var attribute = type.GetTypeInfo().GetCustomAttribute<RouteAttribute>();
if (attribute != null)
{
// /page/{Id}
var routeInfo = attribute.Template;
}

从这里你想将这个路由数据添加到你的应用程序的路由表中,记录路由关联的类型,所以一旦路由匹配,你可以从对象中提取数据(这是记录输入类型)。

ServiceStack 有一个很好的流畅界面来执行此操作(见下文),但概念完全相同。

Routes
.Add<Hello>("/hello")
.Add<Hello>("/hello/{Name}");

希望对您有所帮助!

关于c# - 是否可以在 ASP.NET Web API(类似于 ServiceStack)中定义模型/DTO 上的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600970/

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