Asp.NET MVC 4 コントローラー (WebAPI ではない) を使用して、単一の URL が HTTP メソッド タイプに基づいて異なるアクション メソッドを指す必要がある真の RESTful API を実装しています。
したがって、mysite.com/Widget/1 などの URL は、次の 3 つのアクション メソッドのいずれかに移動できます。
[HttpPut]
public JSONResult Update(int widgetId) {}
[HttpDelete]
public JSONResult Delete(int widgetId) {}
[HttpGet]
public JSONResult Get(int widgetId) {}
1 つの URL をこれらの異なるアクション メソッドにルーティングする最善の方法は何ですか?
ActionNameフィルターに出くわしました。これは、各アクション メソッドに対して同じになるように設定できます。これにより、RouteConfig クラスは常に同じ ActionName を指し、MVC は HTTP メソッドの type 属性に基づいて適切なアクション メソッドを選択します。
[HttpPut]
[ActionName("CRUD")]
public JSONResult Update(int widgetId) {}
[HttpDelete]
[ActionName("CRUD")]
public JSONResult Delete(int widgetId) {}
[HttpGet]
[ActionName("CRUD")]
public JSONResult Get(int widgetId) {}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Widget", action = "CRUD", id = UrlParameter.Optional }
);
もっと良い方法はありますか?