ASP.NET Core Web API

Gestion efficace de plusieurs paramètres dans les méthodes GET C#

Spread the love

Passer plusieurs paramètres à une méthode GET en C# est une exigence courante dans le développement d’API web. Cet article explore différentes techniques pour y parvenir au sein d’ASP.NET Core, en mettant l’accent sur la clarté, la maintenabilité et les meilleures pratiques.

Table des matières

Passer des paramètres via le routage conventionnel

Le routage conventionnel intègre directement les paramètres dans le chemin d’URL. Cette approche convient pour un petit nombre de paramètres qui identifient directement une ressource.

Exemple : Récupération d’un produit en fonction de son ID et de l’ID de sa catégorie.

URL : /products/123/category/456


using Microsoft.AspNetCore.Mvc;

public class ProductsController : Controller
{
    public IActionResult GetProduct(int productId, int categoryId)
    {
        // Traitement de productId et categoryId
        return Ok($"Product ID: {productId}, Category ID: {categoryId}");
    }
}

Limitations : Les URL deviennent moins lisibles et maintenables à mesure que le nombre de paramètres augmente. Elle est moins flexible pour les paramètres optionnels.

Utiliser le routage par attributs et [FromQuery]

Le routage par attributs offre un meilleur contrôle sur la structure des URL. En utilisant [FromQuery], les paramètres sont extraits de la chaîne de requête, rendant les URL plus propres et plus faciles à gérer, même avec de nombreux paramètres.

Exemple : Le même exemple de récupération de produit, mais en utilisant le routage par attributs et [FromQuery].

URL : /products?productId=123&categoryId=456


using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult GetProduct([FromQuery] int productId, [FromQuery] int categoryId)
    {
        return Ok($"Product ID: {productId}, Category ID: {categoryId}");
    }
}

Cette méthode favorise une meilleure organisation et lisibilité des URL. L’attribut [ApiController] permet la validation automatique des modèles et la gestion des réponses.

Gérer les paramètres optionnels

Les paramètres optionnels améliorent la flexibilité. Utilisez des valeurs par défaut dans la signature de l’action du contrôleur.


[HttpGet]
public IActionResult GetProduct([FromQuery] int productId, [FromQuery] int categoryId, [FromQuery] int pageSize = 10)
{
    return Ok($"Product ID: {productId}, Category ID: {categoryId}, Page Size: {pageSize}");
}

Ici, pageSize prend la valeur 10 par défaut s’il n’est pas fourni dans la chaîne de requête.

Tirer parti de la liaison de modèle

Pour plusieurs paramètres, envisagez de créer un modèle dédié. Cela améliore l’organisation et la maintenabilité du code. ASP.NET Core liera automatiquement la chaîne de requête aux propriétés du modèle.


public class ProductFilter
{
    public int ProductId { get; set; }
    public int CategoryId { get; set; }
    public int PageSize { get; set; } = 10; 
}

[HttpGet]
public IActionResult GetProduct(ProductFilter filter)
{
    return Ok($"Product ID: {filter.ProductId}, Category ID: {filter.CategoryId}, Page Size: {filter.PageSize}");
}

Gestion robuste des erreurs

Gérez toujours les erreurs potentielles, telles que les paramètres obligatoires manquants ou les types de données invalides. Utilisez des techniques telles que la validation de modèle ou des vérifications explicites des paramètres pour gérer ces situations avec élégance.


[HttpGet]
public IActionResult GetProduct(ProductFilter filter)
{
    if (filter.ProductId == 0)
    {
        return BadRequest("Product ID is required.");
    }
    // ... reste de votre logique ...
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *