Web API 2中的多路由
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web API 2中的多路由相关的知识,希望对你有一定的参考价值。
我正在使用Web API 2,我想使用诸如(name&id)之类的参数进行路由。
当我尝试这个:
config.Routes.MapHttpRoute(
name: "IDApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "NameApi",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
我得到的路线'api / customer / getByID / 5'工作正常。
但路线'api / customer / searchByName / fawzy'不起作用。
如果我在IDAPI路由之前设置NameAPI路由,则结果相反。
有任何想法吗 ?
答案
您可以使用命名空间[Route("api/customer/searchByName/{name}")]
中的属性System.Web.Http.Routing
进行searchByName
操作。
另一答案
我通过模式和路由属性的组合解决了这个问题
在WebAPIConfig文件中:
config.Routes.MapHttpRoute(
name: "IDApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: null,
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: null
);
在控制器中:
[HttpGet]
[Route("api/customer/search/{name}")]
public IHttpActionResult Search(string name)
{
}
[HttpGet]
public IHttpActionResult Get(int id)
{
}
以上是关于Web API 2中的多路由的主要内容,如果未能解决你的问题,请参考以下文章
Web API系列教程2.1 — ASP.NET Web API中的路由机制
Web API系列教程2.2 — ASP.NET Web API中的路由和动作选择机制