Estructura del proyecto web API en .NET 10
Clase 5 de 21 • Curso de APIs con .NET
Contenido del curso
Estructura de una Web API
- 7

Configuración CORS en .NET: solución al error
07:08 min - 8

Rutas en APIs .NET con parámetros
12:50 min - 9

Documentación de APIs con OpenAPI y Swagger en .NET
14:25 min - 10

Middlewares en ASP.NET: pipeline y custom middleware
10:32 min - 11

Inyección de dependencias en .NET: ILogger
09:18 min - 12

Middleware para autenticación básica en .NET
08:17 min
Arquitectura y Middlewares
- 13

Configuración de Entity Framework Core en .NET
07:31 min - 14

Modelos C# y relaciones con Entity Framework
10:01 min - 15

Servicios con Entity Framework para ASP.NET
13:51 min - 16

Cómo crear controladores API en .NET
14:47 min - 17

Conectar API .NET con PostgreSQL
06:57 min - 18

Conectar API .NET a PostgreSQL con EF Core
06:57 min - 19

Clean Architecture en .NET APIs escalables
09:08 min - 20

Pruebas unitarias con xUnit, InMemory y Copilot
09:05 min - 21

Qué sigue después de tu API con .NET
02:16 min
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.
Ejemplo mínimo de configuración:
{
"ConnectionStrings": { "Default": "<cadena>" },
"Jwt": { "Key": "<clave>" },
"ExternalServices": {
"WsUrl": "<url>",
"Azure": { "KeyVault": "<recurso>" }
}
}
¿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]")]
public class WeatherForecastController : ControllerBase
{
[HttpGet]
public IEnumerable<object> Get()
{
// Datos de prueba y respuesta simulada.
var datos = new[] { "Soleado", "Nublado", "Lluvioso" };
var rng = new Random();
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 = new Random();
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.