ASP.NET Web API の複数の GET メソッドを備えた単一のコントローラー
リクエストに一致する複数のアクションのエラーはルートを通じて解決できますWebApiConfig.
で提供されるソリューションでは、ルートの組み合わせを使用してさまざまな GET メソッドをサポートし、標準 REST メソッド:
routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" }); routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}"); routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }); routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
これを実証するために、次のテスト コントローラーを検討します:
public class TestController : ApiController { public string Get() { return string.Empty; } public string Get(int id) { return string.Empty; } public string GetAll() { return string.Empty; } [HttpPost] public void Post([FromBody] string value) { } [HttpPut] public void Put(int id, [FromBody] string value) { } [HttpDelete] public void Delete(int id) { } }
指定されたルートを使用すると、このコントローラーは次のリクエストを処理できます:
GET /Test GET /Test/1 GET /Test/GetAll POST /Test PUT /Test/1 DELETE /Test/1
このソリューションでは、複数の GET メソッドを使用しても、RESTful エンドポイントはそのまま維持され、柔軟性と HTTP 標準への準拠が提供されます。 GET アクションが「Get」で始まらない場合は、わかりやすくするために HttpGet 属性を追加できることに注意してください。
以上が単一の ASP.NET Web API コントローラーで複数の GET メソッドを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。