我正在寫一個REST API,並有以下問題:的.NET Web API - 幾個GET和POST方法
與資源/消息/,我在我的MessageController以下方法:
[HttpGet]
// retrieves all messages for a user
public HttpResponseMessage GetMessages(Guid RecordId) {}
[HttpGet]
// retrieves only a single messages, specified by guid
public HttpResponseMessage GetMessage(Guid RecordId) {}
在我WebApiConfig.cs我有以下路徑:
config.Routes.MapHttpRoute(
name: "MessageRouting",
routeTemplate: "messages/{RecordId}/",
defaults: new { controller = "Message", RecordId= RouteParameter.Optional }
);
這當然是失敗,因爲路由不知道該調用哪個方法。 這裏的問題是,保持平安,我想避免額外的查詢參數,如
GET /messages/?userid=1
如果我寧願從拉的accessToken用戶ID和調用的getMessages如下?
GET /messages
AccessToken=foo
我會使用遇到了同樣的問題[HttpPost]和[HttpPut]以及 - 我總有某一託收或單個項目,我想工作,所以對於每個HTTP方法我會至少有2種方法可以調用。
我沒有移動一個GetMessages()方法到UserController的選項,因爲那裏我會遇到同樣的問題 - 看起來用Web Api,一個控制器只能有每個HTTP方法定義一個單一時間,這使得與集合與單個項目合作非常困難。
我剩下的REST風格,並具有網址唯一標識資源之間的一個小撕裂,但似乎.NET這裏不給我一個選擇,我不能指定路由的HTTP方法。或者我可以嗎?
輝煌。我認爲[ActionName]只對應於defaults參數上的'action'屬性。這是一種享受。 –