1

我有以下測試控制器 -網頁API有兩個獲得行動

 public string Get(int id) 
     { 
      return "hi from test " + id; 
     } 

     [HttpGet] 
     public string Search(string text) 
     { 
      return "you searched for " + text; 
     } 

我可以叫

- http://localhost:58635/api/Test/2 
- http://localhost:58635/api/Test?id=2 
- http://localhost:58635/api/Test/Search?text=textToSearcFor 

但不是http://localhost:58635/api/Test/Search/textToSearcFor

我的路線是像那些在此post

  config.Routes.MapHttpRoute(
        name: "ApiById", 
        routeTemplate: "api/{controller}/{id}", 
        defaults: new { id = RouteParameter.Optional }, 
        constraints: new { id = @"^[0-9]+$" } 
      ); 

     config.Routes.MapHttpRoute(
      name: "ApiByName", 
      routeTemplate: "api/{controller}/{action}/{name}", 
      defaults: null 
     ); 

     config.Routes.MapHttpRoute(
      name: "ApiByAction", 
      routeTemplate: "api/{controller}/{action}", 
      defaults: new { action = "Get" } 
     ); 

我在做什麼錯?

回答

3

爲貴 「ApiByName」 的路線,嘗試改變

routeTemplate: "api/{controller}/{action}/{name}" 

routeTemplate: "api/{controller}/{action}/{text}", 

或者

更改搜索行動 「名稱」 的參數名稱 「文本」

+0

哈哈,反覆sla頭!謝謝 – tom