[英]Multiple Routing in 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
[Route("api/customer/searchByName/{name}")]
屬性用於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)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.