Prozkoumání rozhraní API pro ASP.NET Core

Dokončeno

ASP.NET Core podporuje dva přístupy k vytváření rozhraní API: přístup založený na kontroleru a minimální rozhraní API. Rozhraní API založené na kontroleru je tradiční přístup k vytváření rozhraní API, ve kterých se každý koncový bod mapuje na konkrétní třídu kontroleru. Kontroler zpracuje požadavek, provede jakoukoli potřebnou obchodní logiku a vrátí odpověď.

Rozhraní API postavené na kontroleru

Webové rozhraní API založené na kontroleru se skládá z jedné nebo více tříd kontroleru, které jsou odvozeny z ControllerBase. Následuje příklad kontroleru:

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

Kontrolery webového rozhraní API by se obvykle měly odvozovat z ControllerBase spíše z Controller. Controller se odvozuje z ControllerBase a přidává podporu zobrazení, takže se jedná o zpracování webových stránek, nikoli požadavků webového rozhraní API.

Třída ControllerBase poskytuje mnoho vlastností a metod, které jsou užitečné pro zpracování požadavků HTTP. Například v následujícím vzorovém kódu CreatedAtAction vrátí stavový kód 201:

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

Minimální rozhraní API

Minimální rozhraní API představují zjednodušený přístup k vytváření rychlých rozhraní API HTTP s ASP.NET Core. Plně funkční koncové body REST můžete vytvářet s minimálním kódem a konfigurací. Vynechte tradiční generování pomocného kódu deklarováním tras a akcí API. Například následující kód vytvoří rozhraní API v kořenovém adresáři webové aplikace, které vrátí text "Hello World!".

var app = WebApplication.Create(args);

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

app.Run();

Většina rozhraní API přijímá parametry jako součást trasy.

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

Minimální rozhraní API podporují konfiguraci a přizpůsobení potřebné ke škálování na více rozhraní API, zpracování složitých tras, použití autorizačních pravidel a řízení obsahu odpovědí rozhraní API.