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
Libérer: 2025-01-05 09:43:08
original
487 Les gens l'ont consulté

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) });
Copier après la connexion

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)
    {
    }
}
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal