Crear el backend de una tienda online con .NET es un excelente proyecto para aprender a construir APIs profesionales, trabajar con bases de datos y aplicar buenas prácticas de arquitectura. La idea es crear una API capaz de administrar productos, usuarios, categorías, carritos y pedidos.
1. Crear el proyecto
Podemos comenzar con ASP.NET Core Web API:
dotnet new webapi -n TiendaOnline.API
cd TiendaOnline.API
Para trabajar con Entity Framework Core y SQL Server:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
La estructura puede organizarse así:
TiendaOnline.API
├── Controllers
├── Models
├── DTOs
├── Data
├── Services
├── Repositories
└── Program.cs
Esta separación permite mantener cada responsabilidad en su lugar.
2. Crear las entidades
Una tienda necesita modelos como Producto, Categoria, Usuario, Carrito, Pedido y DetallePedido.
Por ejemplo:
public class Producto
{
public int Id { get; set; }
public string Nombre { get; set; } = "";
public decimal Precio { get; set; }
public int Stock { get; set; }
public int CategoriaId { get; set; }
}
Después configuramos las relaciones utilizando Entity Framework Core.
3. Configurar la base de datos
Creamos un DbContext:
public class TiendaDbContext : DbContext
{
public TiendaDbContext(DbContextOptions<TiendaDbContext> options)
: base(options) { }
public DbSet<Producto> Productos => Set<Producto>();
public DbSet<Categoria> Categorias => Set<Categoria>();
public DbSet<Pedido> Pedidos => Set<Pedido>();
}
Y configuramos la conexión en appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=TiendaDB;Trusted_Connection=True;TrustServerCertificate=True"
}
}
Luego podemos crear la base de datos mediante migraciones:
dotnet ef migrations add InitialCreate
dotnet ef database update
4. Crear los endpoints
El controlador de productos puede permitir consultar, crear, actualizar y eliminar productos:
[ApiController]
[Route("api/[controller]")]
public class ProductosController : ControllerBase
{
private readonly TiendaDbContext _context;
public ProductosController(TiendaDbContext context)
{
_context = context;
}
[HttpGet]
public async Task<IActionResult> Get()
{
return Ok(await _context.Productos.ToListAsync());
}
}
De esta manera tendremos endpoints como:
GET /api/productos
GET /api/productos/5
POST /api/productos
PUT /api/productos/5
DELETE /api/productos/5
5. Agregar carrito y pedidos
El carrito debe permitir agregar productos, modificar cantidades y eliminarlos.
Cuando el cliente confirme la compra, el backend debe crear un pedido, guardar sus detalles, calcular el total y actualizar el inventario.
Es importante validar que exista suficiente stock antes de confirmar la operación.
6. Autenticación y seguridad
Una tienda real necesita usuarios y autenticación. Una opción común es utilizar ASP.NET Core Identity junto con JWT.
Así podemos proteger endpoints:
[Authorize]
[HttpGet("mis-pedidos")]
public IActionResult MisPedidos()
{
return Ok();
}
De esta forma, solamente usuarios autenticados podrán consultar información privada.
7. Usar DTOs y servicios
Evita enviar directamente las entidades de Entity Framework desde los controladores. Los DTOs permiten controlar qué información entra y sale de la API.
También es recomendable mover la lógica de negocio a servicios:
Controller
↓
Service
↓
Repository / DbContext
↓
SQL Server
Esto hace que el código sea más fácil de probar y mantener.
8. Documentar y probar la API
ASP.NET Core puede integrarse con Swagger para probar los endpoints directamente desde el navegador.
Una API completa debería permitir probar:
- Registro e inicio de sesión.
- CRUD de productos.
- Categorías.
- Carrito de compras.
- Creación de pedidos.
- Control de stock.
- Historial de compras.
- Administración de usuarios.
Conclusión
Un backend de tienda online con .NET no consiste únicamente en crear varios controladores. Lo importante es diseñar correctamente las entidades, relaciones, servicios, autenticación, validaciones y reglas de negocio.
Una arquitectura organizada con ASP.NET Core + Entity Framework Core + SQL Server + JWT proporciona una base sólida para conectar posteriormente un frontend desarrollado con React, Angular, Blazor, .NET MAUI o cualquier otra tecnología.
El resultado será una API escalable, segura y preparada para convertirse en una tienda online real.

