Introducción: API REST en C# — es más fácil de lo que parece
El desarrollo de aplicaciones web y microservicios es impensable sin una API REST. Si recién comienza su camino en la programación, crear su propia API puede parecer una tarea compleja. Sin embargo, con el framework ASP.NET Core en C#, podrá escribir un servicio RESTful funcional en literalmente 30 minutos.
En esta guía, crearemos paso a paso una API simple para gestionar una lista de tareas (Todo List). Aprenderá a configurar el proyecto, crear un modelo de datos, un controlador y probar los endpoints. Sin magia — solo código limpio y explicaciones claras.
Al final del artículo, tendrá una API completamente funcional que admite todas las operaciones CRUD básicas (Create, Read, Update, Delete).
Paso 1: Preparación del entorno y creación del proyecto
Antes de escribir código, asegúrese de tener instaladas las herramientas necesarias:
- .NET SDK (versión 8.0 o superior) — descargar desde el sitio oficial de Microsoft
- Visual Studio (2022 Community Edition) o Visual Studio Code con la extensión de C#
- Postman o cualquier otro cliente REST para pruebas
Abra la terminal (o línea de comandos) y ejecute el siguiente comando para crear un nuevo proyecto Web API:
dotnet new webapi -n TodoApicd TodoApiDespués de crear el proyecto, abra la carpeta TodoApi en su IDE. La estructura del proyecto contendrá varias carpetas y archivos, pero por ahora nos interesan tres clave: Program.cs, Controllers y Models.
Paso 2: Creación del modelo de datos
El modelo es una clase que describe la estructura de datos de nuestra API. Para la lista de tareas, necesitaremos tres campos: un identificador único, el nombre y el estado de finalización.
Cree una nueva carpeta Models en la raíz del proyecto, y dentro, un archivo TodoItem.cs:
namespace TodoApi.Models;
public class TodoItem{ public int Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; }}Observe el signo de interrogación después de string. Indica que la propiedad Name puede ser null. Esta es una buena práctica para evitar advertencias del compilador.
Paso 3: Creación del controlador e implementación de CRUD
El controlador es una clase que maneja las solicitudes HTTP. En ASP.NET Core, los controladores heredan de ControllerBase y usan atributos para el enrutamiento.
Cree un archivo TodoItemsController.cs en la carpeta Controllers:
using Microsoft.AspNetCore.Mvc;using TodoApi.Models;
namespace TodoApi.Controllers;
[ApiController][Route("api/[controller]")]public class TodoItemsController : ControllerBase{ private static List<TodoItem> _todoItems = new();
// GET: api/TodoItems [HttpGet] public ActionResult<IEnumerable<TodoItem>> GetTodoItems() { return _todoItems; }
// GET: api/TodoItems/1 [HttpGet("{id}")] public ActionResult<TodoItem> GetTodoItem(int id) { var item = _todoItems.FirstOrDefault(t => t.Id == id); if (item == null) return NotFound(); return item; }
// POST: api/TodoItems [HttpPost] public ActionResult<TodoItem> PostTodoItem(TodoItem item) { item.Id = _todoItems.Count + 1; _todoItems.Add(item); return CreatedAtAction(nameof(GetTodoItem), new { id = item.Id }, item); }
// PUT: api/TodoItems/1 [HttpPut("{id}")] public IActionResult PutTodoItem(int id, TodoItem updatedItem) { var existingItem = _todoItems.First