Introducción: REST API en C# — es sencillo
REST API (Representational State Transfer) es un estilo arquitectónico que permite a clientes y servidores intercambiar datos a través de HTTP. En el desarrollo web moderno, las API son el estándar de facto para crear el backend de aplicaciones móviles, sitios web y microservicios. En la plataforma .NET (C#), el desarrollo de REST API está altamente optimizado: puedes obtener un prototipo funcional literalmente en media hora, incluso si eres principiante.
En este artículo crearemos una REST API completa para gestionar una lista de tareas (ToDo List). Aprenderás cómo configurar un proyecto ASP.NET Core Web API, crear un modelo de datos, implementar operaciones CRUD (Create, Read, Update, Delete) y probar la API a través de Swagger. Todo el proceso no tomará más de 30 minutos.
1. Creación del proyecto e instalación de dependencias
Primero, abre Visual Studio 2022 (o Visual Studio Code con .NET SDK 6.0/7.0/8.0 instalado). Sigue estos pasos:
- Selecciona Crear nuevo proyecto → ASP.NET Core Web API.
- Nombra el proyecto, por ejemplo
TodoApi. - Asegúrate de que el framework seleccionado sea .NET 8.0 (o superior).
- Desmarca la casilla Use controllers si deseas usar la API mínima, pero en esta guía usaremos controladores clásicos — déjala marcada.
- Haz clic en Crear.
Después de crear el proyecto, la estructura se verá así:
TodoApi/├── Controllers/├── Models/├── Program.cs└── appsettings.jsonNo es necesario instalar paquetes adicionales — todos los componentes necesarios ya están integrados en ASP.NET Core.
2. Creación del modelo de datos y contexto de base de datos
2.1. Modelo TodoItem
Crea una carpeta Models y agrega la clase TodoItem.cs:
namespace TodoApi.Models;
public class TodoItem{ public int Id { get; set; } public string? Title { get; set; } public bool IsComplete { get; set; }}Este es un modelo mínimo: identificador, título de la tarea y bandera de finalización.
2.2. Contexto de base de datos
Ahora crearemos el contexto para Entity Framework Core. En la carpeta Data (créeala) agrega la clase TodoContext.cs:
using Microsoft.EntityFrameworkCore;using TodoApi.Models;
namespace TodoApi.Data;
public class TodoContext : DbContext{ public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }
public DbSet<TodoItem> TodoItems { get; set; }}2.3. Configuración de Program.cs
Abre Program.cs y agrega el registro del contexto y Swagger:
using Microsoft.EntityFrameworkCore;using TodoApi.Data;
var builder = WebApplication.CreateBuilder(args);
// Agregamos controladoresbuilder.Services.AddControllers();
// Registramos el contexto de BD (usamos InMemory para simplicidad)builder.Services.AddDbContext<TodoContext>(opt => opt.UseInMemoryDatabase("TodoList"));
// Swaggerbuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment()){ app.UseSwagger(); app.UseSwaggerUI();}
app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();
app.Run();Nota: estamos usando UseInMemoryDatabase — es conveniente para prototipado. En un proyecto real, reemplázalo con SQL Server, PostgreSQL u otra BD.
3. Implementación del controlador con operaciones CRUD
Ahora lo más importante — el controlador. Crea en la carpeta Controllers el archivo TodoItemsController.cs:
using Microsoft.AspNetCore.Mvc;