2012-07-30 48 views
0

當我使用下面的代碼:重載Get參數名稱在功能上很重要?

public HttpResponseMessage Get() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!"); 
} 

public HttpResponseMessage Get(int id) 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, id); 
} 

請求準確工作,因爲他們應該。 GET: api/controller返回正文「Empty!」,並且GET: api/controller/12返回200正文「12」。

但只要我在我的代碼改成這樣:「!空」

public HttpResponseMessage Get() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!"); 
} 

public HttpResponseMessage Get(int itemId) //changed parameter name 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, itemId); 
} 

一切擊中的默認方法,並返回

我認爲這是許多命名約定事項之一,但我找不到任何說明參數必須命名爲特定值的文檔或其他帖子。

它似乎是一個語義問題,但我想知道爲什麼我必須命名我的參數具體的事情,或我做錯了什麼。爲什麼不能簡單地工作?

回答

0

該公約是在RouteConfig.cs在路由表中,如果更改參數的名稱,應該相應改變:

routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{itemId}", 
      defaults: new { itemId = RouteParameter.Optional } 
    ); 
+0

韋爾普。這是一個愚蠢的疏忽。謝謝! – 2012-07-30 18:50:21