Erkunden ASP.NET Core-APIs

Abgeschlossen

ASP.NET Core unterstützt zwei Ansätze zum Erstellen von APIs: einen controllerbasierten Ansatz und minimale APIs. Eine controllerbasierte API ist ein herkömmlicher Ansatz zum Erstellen von APIs, in denen jeder Endpunkt einer bestimmten Controllerklasse zugeordnet ist. Der Controller verarbeitet die Anforderung, führt alle erforderlichen Geschäftslogik aus und gibt eine Antwort zurück.

Controllerbasierte API

Eine controllerbasierte Web-API besteht aus einer oder mehreren Controllerklassen, die von ControllerBaseabgeleitet werden. Nachfolgend sehen Sie ein Beispiel für einen Controller:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

Web-API-Controller sollten in der Regel von ControllerBase abgeleitet werden, statt von Controller. Controller abgeleitet von ControllerBase und fügt Unterstützung für Ansichten hinzu, sodass es sich um die Behandlung von Webseiten und nicht um Web-API-Anforderungen geht.

Die ControllerBase-Klasse stellt viele Eigenschaften und Methoden bereit, die für die Behandlung von HTTP-Anforderungen nützlich sind. Im folgenden Codebeispiel gibt CreatedAtAction beispielsweise einen Statuscode 201 zurück:

[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public ActionResult<Pet> Create(Pet pet)
{
    pet.Id = _petsInMemoryStore.Any() ? 
             _petsInMemoryStore.Max(p => p.Id) + 1 : 1;
    _petsInMemoryStore.Add(pet);

    return CreatedAtAction(nameof(GetById), new { id = pet.Id }, pet);
}

Minimale API

Minimale APIs sind ein vereinfachter Ansatz zum Erstellen schneller HTTP-APIs mit ASP.NET Core. Sie können voll funktionsfähige REST-Endpunkte mit minimalem Code und minimaler Konfiguration erstellen. Überspringen Sie das herkömmliche Gerüst, indem Sie API-Routen und -Aktionen deklarieren. Mit dem folgenden Code wird beispielsweise eine API im Stammverzeichnis der Web-App erstellt, die den Text "Hello World!" zurückgibt.

var app = WebApplication.Create(args);

app.MapGet("/", () => "Hello World!");

app.Run();

Die meisten APIs akzeptieren Parameter als Teil der Route.

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.MapGet("/users/{userId}/books/{bookId}", 
    (int userId, int bookId) => $"The user id is {userId} and book id is {bookId}");

app.Run();

Minimale APIs unterstützen die Konfiguration und Anpassung, die erforderlich ist, um auf mehrere APIs zu skalieren, komplexe Routen zu verarbeiten, Autorisierungsregeln anzuwenden und den Inhalt der API-Antworten zu steuern.