2012-12-14 113 views
1

我有以下網址:網頁API路由

本地主機/ API /機/ somecode /所有

我有以下控制器:

public class MachineController : ApiController 
{ 
    public IEnumerable<Machine> Get() 
    { 
     return new List<Machine> 
        { 
         new Machine 
          { 
           LastPlayed = DateTime.UtcNow, 
           MachineAlertCount = 1, 
           MachineId = "122", 
           MachineName = "test", 
           MachinePosition = "12", 
           MachineStatus = "test" 
          } 
        }; 
    } 

    public IEnumerable<Machine> All(string code) 
    { 
     return new List<Machine> 
        { 
         new Machine 
          { 
           LastPlayed = DateTime.UtcNow, 
           MachineAlertCount = 1, 
           MachineId = "122", 
           MachineName = "test", 
           MachinePosition = "12", 
           MachineStatus = "test" 
          } 
        }; 
    } 
} 

及以下線路:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "MachineApi", 
      routeTemplate: "api/machine/{code}/all" 
    ); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 


    } 
} 

但由於某種原因,它沒有解決 - 爲什麼顯而易見明顯的原因?

回答

0

它從哪裏獲取代碼?

routeTemplate: "api/machine/{code}/all" 

我假設那是失敗的路線。

您是否需要defaults:設置?

其實這是不是默認爲:

api/machine/all/{code} 

你試過在尋找在Firefox Net標籤?這會告訴你它試圖去的路線。

2

呀使用的方法名你推斷的行動,您還需要指出的控制器以匹配所以這可能會工作:

config.Routes.MapHttpRoute(
     name: "MachineApi", 
     routeTemplate: "api/machine/{code}/all", 
     defaults: new { Action = "All", Controller = "Machine" } 
); 
+0

嗨 - 感謝您的 - 不幸的是,網址設定從傳統服務石頭:\ – iwayneo

+0

嗨。夠公平的,但我的第一部分應該允許你的其他方法工作。已更新刪除提示。 –