簡體   English   中英

Web API 2中的多重路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM