Rutas en APIs .NET con parámetros
Clase 8 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
Viendo ahora - 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

Controladores API en .NET con Swagger
14:46 min - 17

Conectar API .NET con SQL Server
09:51 min - 18

Conectar .NET API con PostgreSQL usando Entity Framework
06:57 min - 19

Qué es Clean Architecture en .NET
09:08 min - 20

Pruebas unitarias en .NET con Copilot
09:05 min - 21

Qué sigue después de tu API con .NET
02:16 min
Domina el manejo de rutas en APIs .NET con un enfoque práctico: desde configurar la ruta base con el atributo Route hasta crear endpoints con parámetros y devolver respuestas HTTP correctas usando ActionResult. Verás cómo evitar errores comunes, aprovechar Hot Reload y explorar endpoints con Endpoints Explorer, manteniendo un estilo REST claro y predecible.
¿Cómo configurar la ruta base en .NET?
Configurar la ruta base define cómo se accede a tu controller. Usar [Route("api/[controller]")] iguala el nombre de la ruta al nombre del controller, un patrón común para agrupar recursos de la API.
- Usa [ApiController] y ControllerBase para respuestas HTTP listas para usar.
- Prefija con api/ para separar endpoints de salud o documentación de la API pública.
- Valida con Hot Reload para aplicar cambios sin reiniciar.
- Si la URL no existe, el framework responde 404 Not Found acorde a REST.
Ejemplo base con lista precargada y GET general:
[ApiController]
[Route("api/[controller]")]
public class WeatherForecastController : ControllerBase
{
private static List<WeatherForecast> _items;
public WeatherForecastController()
{
if (_items == null)
{
// Inicializa 5 elementos aleatorios como en la plantilla por defecto.
_items = Enumerable.Range(1, 5)
.Select(i => new WeatherForecast { /* ... */ })
.ToList();
}
}
[HttpGet]
public IEnumerable<WeatherForecast> Get() => _items;
}
¿Cómo crear endpoints con parámetros y rutas relativas o absolutas?
Definir la ruta de un endpoint con parámetro es directo. La clave está en si la ruta es relativa (se suma a la base) o absoluta (reemplaza la base).
- Relativa: sin slash inicial. Se concatena a la base del controller.
- Absoluta: con slash inicial. Ignora la ruta base y crea una nueva.
- El nombre del parámetro en la ruta debe coincidir con el del método.
Relativa (se combina con api/weatherforecast):
[HttpGet("{id}")]
public ActionResult<WeatherForecast> GetById(int id)
{
// Validación se muestra abajo.
return Ok(_items[id]);
}
Absoluta (no usa la base del controller):
[HttpGet("/id")] // o [Route("/id")]
public WeatherForecast GetByAbsolute(int id) => _items[id];
Apóyate en Endpoints Explorer para ver la lista de endpoints y generar un request de prueba rápidamente.
¿Cómo devolver códigos HTTP correctos con ActionResult?
Devolver el código correcto mejora la claridad del contrato REST. Un acceso fuera de rango produce una excepción y termina en 500 Internal Server Error si no lo controlas. En su lugar, valida y devuelve 400 Bad Request; en casos válidos, 200 OK.
- Usa ActionResult
para retornar tanto datos como estados HTTP. - Métodos útiles: BadRequest() y Ok() ya disponibles por ControllerBase.
- Valida límites: el índice no debe ser negativo ni superar el tamaño de la lista.
Ejemplo con validación y respuestas adecuadas:
[HttpGet("{id}")]
public ActionResult<WeatherForecast> GetById(int id)
{
if (id < 0 || id >= _items.Count)
{
return BadRequest(); // Request inválido: índice fuera de rango.
}
return Ok(_items[id]); // 200 OK con el elemento solicitado.
}
Prácticas útiles para probar:
- Usa el archivo HTTP del proyecto para lanzar requests rápidos.
- Verifica cambios con Hot Reload antes de probar.
- Prueba también con Postman para ganar experiencia en ambas herramientas.
- Completa el CRUD: crea con POST, actualiza con PUT y elimina con DELETE.
¿Quieres que revisemos tu ruta actual o un caso particular de validación? Cuéntalo en los comentarios y te ayudo a pulirlo.