Introducción: REST API en C# es sencillo
Crear un REST API moderno en C# usando ASP.NET Core es una de las tareas más demandadas en el desarrollo backend. Muchos desarrolladores principiantes piensan que escribir una API completa requiere semanas de preparación. En realidad, usando las herramientas adecuadas, puedes crear un REST API funcional en C# en solo 30 minutos.
En este artículo, analizaremos en la práctica cómo escribir un REST API en C# desde cero. Crearemos un microservicio simple para gestionar una lista de tareas (Todo List), utilizando las capacidades integradas de ASP.NET Core. Aprenderás cómo configurar el enrutamiento, implementar operaciones CRUD y probar la API a través de Swagger UI.
1. Configuración del proyecto en 5 minutos
Para empezar, asegúrate de tener instalado .NET SDK 6.0 o superior. Si no es así, descárgalo desde el sitio oficial de Microsoft. Abre la terminal y ejecuta los siguientes comandos:
dotnet new webapi -n TodoApicd TodoApicode .Estos comandos crearán un nuevo proyecto Web API y lo abrirán en Visual Studio Code. La estructura del proyecto incluye varios archivos importantes:
Program.cs— punto de entrada y configuración de serviciosControllers/— carpeta para los controladores de la APIappsettings.json— archivo de configuración
Por defecto, el proyecto ya contiene un ejemplo de controlador WeatherForecastController. Lo eliminaremos y crearemos el nuestro.
Importante: Asegúrate de que en el archivo Program.cs existan las líneas builder.Services.AddControllers(); y app.MapControllers();. Esta es la configuración estándar para un REST API en C#.
2. Creación del modelo de datos y el controlador (10 minutos)
Empecemos creando el modelo de datos. En la carpeta raíz del proyecto, crea una carpeta Models y añade dentro el archivo TodoItem.cs:
public class TodoItem{ public int Id { get; set; } public string Title { get; set; } = string.Empty; public bool IsComplete { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow;}Ahora crearemos el controlador. En la carpeta Controllers, añade el archivo TodoController.cs. Este es el corazón de nuestro REST API en C#:
[ApiController][Route("api/[controller]")]public class TodoController : ControllerBase{ private static List<TodoItem> _todos = new(); private static int _nextId = 1;
[HttpGet] public IActionResult GetAll() { return Ok(_todos); }
[HttpGet("{id}")] public IActionResult GetById(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); return Ok(todo); }
[HttpPost] public IActionResult Create(TodoItem item) { item.Id = _nextId++; _todos.Add(item); return CreatedAtAction(nameof(GetById), new { id = item.Id }, item); }
[HttpPut("{id}")] public IActionResult Update(int id, TodoItem item) { var existing = _todos.FirstOrDefault(t => t.Id == id); if (existing == null) return NotFound(); existing.Title = item.Title; existing.IsComplete = item.IsComplete; return NoContent(); }
[HttpDelete("{id}")] public IActionResult Delete(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); _todos.Remove(todo); return NoContent(); }}Observa los atributos:
[ApiController]— habilita la validación automática de modelos[Route("api/[controller]")]— define la ruta base/api/todo[HttpGet], [HttpPost], [HttpPut], [HttpDelete]— vinculan