Comienza con una base sólida en .NET 10 para crear una web API clara, segura y mantenible. Aquí entenderás cómo se organiza el proyecto, qué papel cumple appsettings por ambiente, cómo funciona Program.cs con el patrón builder y cuándo conviene usar controllers o la plantilla Minimal API. Todo con ejemplos directos y listos para probar.
¿Qué contiene el proyecto base en .NET 10 web API?
La plantilla inicial de .NET 10 incluye archivos y servicios clave para arrancar rápido. Identificar su propósito evita errores y acelera la configuración.
¿Para qué sirve el archivo de proyecto y el SDK?
Define el SDK de .NET usado por la solución.
Configura versión y opciones de C#.
Incluye el paquete de OpenAPI para documentar la API.
¿Cómo configurar appsettings por ambiente?
appsettings.json concentra variables como cadenas de conexión y claves para JSON Web Token.
Permite entradas para servicios externos: conexión a WS, integración con Azure, entre otros.
Soporta archivos por ambiente: appsettings.Development.json, y puedes crear Testing o Production según necesites.
¿Qué es el archivo http para pruebas de endpoints?
Es un archivo de solicitudes HTTP incluido en la plantilla.
Permite probar endpoints sin herramientas externas.
Ejemplo simple de prueba:
GET https://localhost:5001/weatherforecast
¿Cómo se orquesta con Program.cs y el patrón builder?
Program.cs encadena configuraciones y arranque de la API con un flujo claro: registrar servicios, construir la aplicación y ejecutar.
¿Cómo opera el patrón builder y el run?
Se crea un builder que agrega servicios paso a paso.
Se construye la app con Build y se ejecuta con Run.
Ventaja: configuración fluida, legible y extensible.
Ejemplo orientativo:
var builder = WebApplication.CreateBuilder(args);// Servicios de la API.builder.Services.AddControllers();builder.Services.AddEndpointsApiExplorer();// Soporte para OpenAPI.builder.Services.AddSwaggerGen();var app = builder.Build();// OpenAPI solo en desarrollo.if(app.Environment.IsDevelopment()){ app.UseSwagger(); app.UseSwaggerUI();}// Aquí puedes mapear controllers o endpoints mínimos.app.Run();
¿Cómo aplica MVC sin vista en APIs?
El patrón MVC separa responsabilidades: modelo, vista y controlador.
En una API no hay interfaz gráfica: se mantiene controller y model.
Las URLs activan controladores y acciones; la respuesta suele ser JSON, aunque puede ser XML o archivos.
¿Cuándo usar controllers vs Minimal API y cómo mapear endpoints?
Elegir la plantilla adecuada depende del alcance y la complejidad. Entender ambos enfoques te ahorra tiempo y recursos.
¿Qué hacen los controllers con [ApiController] y [Route]?
[ApiController] indica que la clase expone acciones de API.
[Route] define la ruta base del controlador.
Se organizan acciones como GET, POST o DELETE en métodos claros.
Ejemplo orientativo de controller:
[ApiController][Route("[controller]")]publicclassWeatherForecastController:ControllerBase{[HttpGet]publicIEnumerable<object>Get(){// Datos de prueba y respuesta simulada.var datos =new[]{"Soleado","Nublado","Lluvioso"};var rng =newRandom();return Enumerable.Range(1,5).Select(_ =>new{ Fecha = DateTime.UtcNow.AddDays(rng.Next(1,7)), Estado = datos[rng.Next(datos.Length)]});}}
¿Cómo mapear rutas en Minimal API con map get, post y delete?
No hay carpeta Controllers: todo se define en Program.cs.
Mapea rutas con MapGet, MapPost y MapDelete.
Menos código y mejor rendimiento en APIs simples.
Ejemplo de Minimal API con rutas:
var builder = WebApplication.CreateBuilder(args);var app = builder.Build();// GET simple.app.MapGet("/weatherforecast",()=>{var datos =new[]{"Soleado","Nublado","Lluvioso"};var rng =newRandom();return Enumerable.Range(1,3).Select(_ =>new{ Fecha = DateTime.UtcNow.AddDays(rng.Next(1,5)), Estado = datos[rng.Next(datos.Length)]});});// Reto sugerido: devolver la hora del servidor.app.MapGet("/hora",()=> DateTime.UtcNow);// Otras acciones típicas.app.MapPost("/recurso",()=> Results.Created("/recurso/1",new{ ok =true}));app.MapDelete("/recurso/{id}",(int id)=> Results.NoContent());app.Run();
¿En qué escenarios conviene Minimal API y rendimiento?
Proyectos pequeños, demos o responsabilidades muy específicas.
Casos de solo lectura o sin operaciones complejas: ejemplo, una API pública que solo devuelve datos como departamentos, mapas o días festivos.
Beneficio clave: mejor rendimiento al reducir estructura y sobrecarga de controllers.
¿Qué parte te gustaría profundizar: configuración por ambientes, controllers o Minimal API? Comparte tus dudas o tu ejemplo de endpoint con la hora del servidor.
Como alguien que está dando sus primeros pasos en .NET, este resumen me ayudó mucho a ver el panorama más claro. Para los que estamos empezando, yo destacaría estos tres puntos que me parecen clave:
La sencillez del inicio: Es genial ver cómo con el Program.cs y el patrón builder se puede montar una API funcional en muy pocas líneas. No asusta tanto como antes.
Organización desde el día 1: Aprender a usar el appsettings.json para separar la configuración según el ambiente (desarrollo o producción) parece un hábito fundamental para evitar errores después.
Flexibilidad: Saber que existen las Minimal APIs para cosas rápidas y los Controllers para proyectos más grandes nos da buenas opciones según lo que necesitemos construir.
Me genera curiosidad: para un primer proyecto pequeño, ¿ustedes recomendarían ir directo por Minimal APIs para no complicarse con carpetas, o es mejor aprender Controllers desde el principio?
Puedes usar Minimal API mientras aprendes, pero en producción lo mejor es usar Controllers.
Mi consejo es de una vez aprender Controllers
Si tu objetivo es conseguir un empleo o trabajar en proyectos grandes, vete por los Controllers. Te obligan a entender cómo se estructura profesionalmente una aplicación desde el día uno.
Bien!! puedes tambien crear clas clase simple con una propiedad si lo quieres devolver en un json
var builder =WebApplication.CreateBuilder(args);var app = builder.Build();string fechaServer =DateTime.Now.ToString("dd-MM-yyyy");app.MapGet("/",()=> $"La fecha del sevidor es {fechaServer}");app.Run();