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中文网其他相关文章!