Prozkoumání rozhraní API pro ASP.NET Core
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.