Esplorare le API di ASP.NET Core
ASP.NET Core supporta due approcci alla creazione di API: un approccio basato su controller e API minime. Un'API basata su controller è un approccio tradizionale alla creazione di API in cui ogni endpoint viene mappato a una classe controller specifica. Il controller gestisce la richiesta, esegue qualsiasi logica di business necessaria e restituisce una risposta.
API basata su controller
Un'API web basata su controller è costituita da una o più classi di controller che derivano da ControllerBase. Di seguito è riportato un esempio di controller:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
I controller API Web devono in genere derivare da ControllerBase piuttosto che da Controller.
Controller deriva da ControllerBase e aggiunge il supporto per le visualizzazioni, pertanto è progettata per la gestione delle pagine Web e non per le richieste di API Web.
La classe ControllerBase offre molti metodi e proprietà utili per la gestione delle richieste HTTP. Nell'esempio di CreatedAtAction codice seguente, ad esempio, viene restituito un codice di stato 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);
}
API essenziale
Le API minime sono un approccio semplificato per la creazione di API HTTP veloci con ASP.NET Core. È possibile compilare endpoint REST completamente funzionanti con codice e configurazione minimi. Ignorare lo scaffolding tradizionale dichiarando le route e le azioni dell'API. Ad esempio, il codice seguente crea un'API nella radice dell'app Web che restituisce il testo "Hello World!".
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
La maggior parte delle API accetta parametri come parte della 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();
Le API minime supportano la configurazione e la personalizzazione necessarie per ridimensionare più API, gestire route complesse, applicare regole di autorizzazione e controllare il contenuto delle risposte api.