2013-05-02 74 views
0

我想將值傳遞給Web Api中的控制器/操作,但它沒有找到它。WebApi路由不通過值

我的路由映射:

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

我ApiController:

[HttpGet] 
    public string MyThing() 
    { 
     return "thing"; 
    } 

    [HttpGet] 
    public string MyStuff(int myid) 
    { 
     return "something " + myid; 
    } 

我通過RestSharp REST調用:

var request = new RestRequest { Resource = "api/values/MyStuff/555", Method = Method.GET }; 

如果我叫MyThing()它的工作原理,但。看來問題在於傳遞id值。

+0

WEB API使用控制器/ HTTP方法/參數 方法名應該GET/POST /把/ etc ... – 2013-05-02 22:15:02

+0

如果你把一個HTTPGET或者HttpPost屬性它會使用請求的功能。 – 2013-05-02 22:17:36

+0

是的,但你不應該。這違背了web api的路由目的。 – 2013-05-02 22:21:17

回答

6

從 「身份識別碼」 到 「ID」

[HttpGet] 
public string MyStuff(int **id**) 
0

解決修改參數名稱。

我發現我必須添加參數作爲查詢字符串,而不是/路徑值。

api/values/MyStuff?myid=555 

代替

api/values/MyStuff/555 
+5

基蘭給了你一個更好的解決方案 – 2013-05-02 22:58:01

+0

我同意菲利普。基蘭是一個更好的解決方案。這也是更加RESTful恕我直言。 – bryanmac 2013-05-03 01:30:33

+0

儘管感覺錯誤的是將名稱傳遞值看作是普通的** id **,但它實際上更好。是的更寧靜和優雅。 – 2013-05-03 02:30:23