FastAPI CRUD: Cómo Crear, Leer, Actualizar y Borrar Datos como un Profesional
Desarrollo crud, desarrollo, fastapi, python1. Introducción a FastAPI y las Operaciones CRUD
FastAPI es un framework web de Python moderno, de alto rendimiento y fácil de aprender, diseñado para construir APIs de manera rápida y eficiente.
Se basa en estándares abiertos como JSON Schema, OAuth2 y OpenAPI. Una de sus mayores ventajas es que genera automáticamente documentación interactiva (Swagger UI y ReDoc), lo que facilita enormemente las pruebas durante el desarrollo.
CRUD – Entendiendo el Ciclo
Cualquier aplicación que maneje información se basa en el ciclo de vida CRUD. Estos se mapean directamente a los métodos del protocolo HTTP:
- POST – Create (Crear): Añadir nuevos registros al sistema.
- GET – Read (Leer): Consultar o visualizar datos existentes.
- PUT – Update (Actualizar): Modificar registros existentes (reemplazo total o PATCH para parcial).
- DEL – Delete (Borrar): Eliminar registros permanentemente.
2. Configuración Inicial del Entorno
Antes de escribir código, debemos preparar nuestro entorno de trabajo siguiendo las mejores prácticas de Python.
# 1. Crear el directorio mkdir fastapi-crud-pro && cd fastapi-crud-pro # 2. Configurar entorno virtual python -m venv venv source venv/bin/activate # macOS/Linux # 3. Instalar dependencias pip install fastapi uvicorn sqlalchemy pydantic
3. CRUD Básico con una Lista en Memoria
Para entender cómo fluyen los datos en FastAPI, iniciaremos con una base de datos temporal en RAM. Esto nos permite centrarnos en la estructura de los endpoints.
Definiendo el “Molde” con Pydantic
Pydantic se encarga de la validación de tipos. Creamos esquemas para definir qué datos esperamos y cuáles devolvemos.
from pydantic import BaseModel
from typing import Optional
class ItemBase(BaseModel):
title: str
description: Optional[str] = None
class ItemCreate(ItemBase):
pass
class Item(ItemBase):
id: int
Implementación de Endpoints
Aquí es donde ocurre la magia. FastAPI usa decoradores para mapear funciones de Python a rutas HTTP.
# Ejemplo de creación (POST)
@app.post("/items/", status_code=201)
def create_item(item: ItemCreate):
global next_id
new_item = {"id": next_id, **item.model_dump()}
items_db.append(new_item)
next_id += 1
return new_item
4. Llevando tu API CRUD al Siguiente Nivel con SQLAlchemy
En aplicaciones reales, los datos deben persistir. Utilizaremos SQLAlchemy como ORM (Object-Relational Mapping) para gestionar la base de datos de forma profesional.
Organización del Proyecto (Clean Architecture)
📂app/database.py— Conexión y sesión
📂app/models.py— Tablas SQLAlchemy
📂app/schemas.py— Modelos Pydantic
📂app/crud.py— Lógica de negocio
La inyección de dependencias es clave en FastAPI. Usamos Depends(get_db) para asegurar que cada petición tenga su propia sesión de base de datos, cerrándola automáticamente al finalizar.
5. Consejos Adicionales para una API Profesional
Manejo Robusto de Errores
No solo lances 404. Personaliza tus excepciones para devolver mensajes JSON claros que ayuden al equipo de frontend.
Paginación
Al leer listas (GET), usa parámetros skip y limit para evitar cargar miles de registros a la vez en memoria.
Response Model
Filtra datos sensibles. Nunca devuelvas contraseñas o datos de auditoría interna si el cliente no los necesita.
6. Conclusión
Hemos pasado de una simple lista en memoria a una arquitectura robusta que separa modelos, esquemas y lógica de acceso a datos. FastAPI no solo facilita la escritura de código rápido, sino que promueve buenas prácticas de ingeniería de software a través de su sistema de tipos.
¿Listo para el siguiente paso?
El camino natural es implementar Autenticación (JWT) y pruebas unitarias con Pytest.Documentación Oficial
Fuentes y Referencias:
• Documentación Oficial de FastAPI
• Pydantic V2 Documentation
• SQLAlchemy Documentation
Share via: