Maison >développement back-end >C++ >Comment gérer plusieurs méthodes GET dans un seul contrôleur d'API Web ASP.NET ?

Comment gérer plusieurs méthodes GET dans un seul contrôleur d'API Web ASP.NET ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-05 09:43:08386parcourir

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

Contrôleur unique avec plusieurs méthodes GET dans l'API Web ASP.NET

Surmonter l'erreur de plusieurs actions correspondant à une requête peut être obtenu via la route définitions dans WebApiConfig.

La solution fournie préconise l'utilisation d'une combinaison de routes pour prendre en charge diverses méthodes GET et le REST standard méthodes :

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) });

Pour démontrer cela, considérons le contrôleur de test suivant :

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)
    {
    }
}

Avec les routes spécifiées, ce contrôleur peut gérer les requêtes suivantes :

GET /Test
GET /Test/1
GET /Test/GetAll
POST /Test
PUT /Test/1
DELETE /Test/1

Cette solution garantit que même avec plusieurs méthodes GET, les points de terminaison RESTful restent intacts, offrant flexibilité et respect des normes HTTP. Notez que si vos actions GET ne commencent pas par « Get », vous pouvez ajouter l'attribut HttpGet pour plus de clarté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn