Exploración de las API de ASP.NET Core

Completado

ASP.NET Core admite dos enfoques para crear API: un enfoque basado en controlador y API mínimas. Una API basada en controlador es un enfoque tradicional para crear API en las que cada punto de conexión se asigna a una clase de controlador específica. El controlador controla la solicitud, realiza cualquier lógica de negocios necesaria y devuelve una respuesta.

API basada en controlador

Una API web basada en controlador consta de una o varias clases de controlador que derivan de ControllerBase. A continuación se muestra un ejemplo de un controlador:

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

Normalmente, los controladores de API web deben derivar de ControllerBase en lugar de Controller. Controller deriva de ControllerBase y agrega compatibilidad con vistas, por lo que es para controlar páginas web, no solicitudes de API web.

La clase ControllerBase proporciona muchas propiedades y métodos que son útiles para controlar las solicitudes HTTP. Por ejemplo, en el ejemplo de código siguiente CreatedAtAction devuelve un código de estado 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 mínima

Las API mínimas son un enfoque simplificado para crear API HTTP rápidas con ASP.NET Core. Puede crear puntos de conexión REST totalmente funcionales con código y configuración mínimos. Omita el andamiaje tradicional al declarar las rutas y acciones de API. Por ejemplo, el código siguiente crea una API en la raíz de la aplicación web que devuelve el texto "Hello World!".

var app = WebApplication.Create(args);

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

app.Run();

La mayoría de las API aceptan parámetros como parte de la ruta.

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

Las API mínimas admiten la configuración y la personalización necesarias para escalar a varias API, controlar rutas complejas, aplicar reglas de autorización y controlar el contenido de las respuestas de API.