ASP.NET Core Web API

Effizientes Handling mehrerer Parameter in C#-GET-Methoden

Spread the love

Das Übergeben mehrerer Parameter an eine GET-Methode in C# ist eine häufige Anforderung bei der Entwicklung von Web-APIs. Dieser Artikel untersucht verschiedene Techniken, um dies in ASP.NET Core zu erreichen, wobei der Schwerpunkt auf Klarheit, Wartbarkeit und Best Practices liegt.

Inhaltsverzeichnis

Parameterübergabe über konventionelles Routing

Konventionelles Routing integriert Parameter direkt in den URL-Pfad. Dieser Ansatz eignet sich für eine kleine Anzahl von Parametern, die eine Ressource direkt identifizieren.

Beispiel: Abrufen eines Produkts basierend auf seiner ID und der Kategorie-ID.

URL: /products/123/category/456


using Microsoft.AspNetCore.Mvc;

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

Einschränkungen: URLs werden mit zunehmender Anzahl von Parametern weniger lesbar und wartbar. Es ist weniger flexibel für optionale Parameter.

Verwenden von Attribut-Routing und [FromQuery]

Attribut-Routing bietet mehr Kontrolle über die URL-Struktur. Mit [FromQuery] werden Parameter aus der Query-String extrahiert, wodurch URLs sauberer und übersichtlicher werden, selbst bei vielen Parametern.

Beispiel: Das gleiche Beispiel zum Abrufen von Produkten, aber mit Attribut-Routing und [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}");
    }
}

Diese Methode fördert eine bessere URL-Organisation und Lesbarkeit. Das Attribut [ApiController] ermöglicht automatische Modellvalidierung und Antwortbehandlung.

Behandlung optionaler Parameter

Optionale Parameter erhöhen die Flexibilität. Verwenden Sie Standardwerte in der Controller-Aktionssignatur.


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

Hier hat pageSize den Standardwert 10, wenn er nicht in der Query-String angegeben wird.

Nutzen von Model Binding

Für mehrere Parameter sollten Sie ein dediziertes Modell erstellen. Dies verbessert die Codeorganisation und Wartbarkeit. ASP.NET Core bindet die Query-String automatisch an die Eigenschaften des Modells.


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

Robuste Fehlerbehandlung

Behandeln Sie immer potenzielle Fehler, wie z. B. fehlende erforderliche Parameter oder ungültige Datentypen. Verwenden Sie Techniken wie Modellvalidierung oder explizite Parameterprüfungen, um diese Situationen problemlos zu behandeln.


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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert