如何制作.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 的自定义路由?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web Api 路由自定义

.Net Core 3.1 Web Api 的自定义 OData 日期时间序列化程序

csharp 使用Log4net日志记录的自定义Web API过滤器。

如何停止 .Net Core Web API 中的自引用循环?

webapi 实现特效路由的自定义约束 大写约束

如何让 OAuth 2.0 正确地在我的自定义 API .net 核心中使用外部 API