Cómo crear un backend completo para una tienda online con .NET

Cómo crear un backend completo para una tienda online con .NET

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.

Te puede interesar...

Deja un comentario