如何制作.NET Web API 的自定义路由?
Posted
技术标签:
【中文标题】如何制作.NET Web API 的自定义路由?【英文标题】:How to make a custom route of .NET Web API? 【发布时间】:2019-07-31 16:39:05 【问题描述】:好的,当我们第一次运行一个web api项目时,我们通常在WebApiConfig中有这个
config.Routes.MapHttpRoute(
"DefaultApi",
"api/controller/id",
new id = RouteParameter.Optional
);
如果我想创建一个新路由而不是使用 controller 会是这样的
config.Routes.MapHttpRoute(
"DefaultApi",
"api/queries/query/id",
new id = RouteParameter.Optional
);
我有我的自定义类来检索这样的名单:
public class GetNameListQuery
[HttpGet]
public IEnumerable<String> GetNames()
return new String[] "John" , "Adams" ;
因此,当我运行 URI“mylocalhost/api/queries/GetNameList”时,我会得到名称“John”和“Adams”。我是 .NET 的新手,不确定有什么方法可以做这样的事情。感谢你的帮助。谢谢!!
【问题讨论】:
在 4.5 或 4.6+ MVC 中允许[HttpGet]
拥有路由的 URL。请参阅:docs.microsoft.com/en-us/aspnet/core/mvc/controllers/… 中带有 Http[Verb] 属性的属性路由以及上面的段落 - 这对您有用吗?阅读整篇文章:)
【参考方案1】:
在您的路线配置中:
routes.MapRoute(
"DefaultApi2",
"api/queries/action",
new controller = "Query"
);
然后创建控制器查询
public class QueryController : ApiController
[HttpGet]
public IEnumerable<String> GetNames()
return new String[] "John", "Adams" ;
访问这条路线:http://localhost/api/query/GetNameList
【讨论】:
以上是关于如何制作.NET Web API 的自定义路由?的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core 3.1 Web Api 的自定义 OData 日期时间序列化程序
csharp 使用Log4net日志记录的自定义Web API过滤器。