Esplorare le API di ASP.NET Core

Completato

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.