Exploración de las API de ASP.NET Core
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.