14. Minimal APIs y controladores
Secciones
Ajustes de lectura
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
Las Minimal APIs y los controladores publican endpoints mediante endpoint routing. Elige según composición, no por eslóganes.
El binding es un contrato público
Sección titulada «El binding es un contrato público»Un handler liga route, query, headers, servicios y body desde parámetros. Haz explícita la fuente cuando la ambigüedad sea peligrosa.
without key: 400; with key: 200 {"root":"C","notes":7}TypedResults conserva tipos concretos para tests y OpenAPI. Un endpoint filter decora handlers; la autorización corresponde al sistema de autorización y a metadatos de endpoint.
Donde los controladores siguen siendo profundos
Sección titulada «Donde los controladores siguen siendo profundos»Los controladores aportan convenciones, model binding, filtros y validación. El programa mapea ambos estilos en la misma tabla:
controller: 200 {"symbol":"Cmaj7","characters":5}No dupliques policy: cada transporte llama la misma seam de aplicación.
Streaming
Sección titulada «Streaming»IAsyncEnumerable<T> permite consumo asíncrono por el serializer. Los proxies aún pueden bufferizar; para entrega progresiva mide toda la ruta y elige NDJSON, SSE o SignalR según contrato.
Ejecutar la prueba
Sección titulada «Ejecutar la prueba»dotnet run --project code/csharp-advanced/Advanced -c Release -- l14La salida verificada es expected/l14.txt.
Ejercicios
Sección titulada «Ejercicios»- Añade
notesnegativo y un contrato portable de error. - Expón la misma operación por Minimal API y controlador sin duplicar policy.
- Cancela el stream tras el primer elemento y prueba que la fuente observa cancelación.
Soluciones
- Rechaza en la frontera con problem details estable y prueba estado, media type y payload.
- Liga entradas a un comando/query único, llama un solo handler y mapea el resultado en cada adapter.
- Pasa
RequestAborted, cierra la respuesta en el cliente y comprueba elfinallyo la sonda de cancelación.