首页 >后端开发 >C++ >如何在单个 ASP.NET Web API 控制器中处理多个 GET 方法?

如何在单个 ASP.NET Web API 控制器中处理多个 GET 方法?

Patricia Arquette
Patricia Arquette原创
2025-01-05 09:43:08390浏览

How to Handle Multiple GET Methods in a Single ASP.NET Web API Controller?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn