FastAPI es una herramienta moderna y poderosa para construir APIs REST de manera sencilla y eficiente. En este tutorial, aprenderás a construir una API REST básica para gestionar tareas (un clásico: to-do list).
Requisitos previos
- Conocimientos básicos de Python.
- Tener Python 3.7+ instalado en tu sistema.
Paso 1: Configurar el Entorno
- Crea un entorno virtual para mantener las dependencias organizadas:
python -m venv venv source venv/bin/activate # O venv\Scripts\activate en Windows
- Instala FastAPI y Uvicorn:
pip install fastapi uvicorn
Paso 2: Crear el Proyecto
Crea una estructura de proyecto sencilla:
todo_api/ ├── app.py ├── models.py └── requirements.txt
Guarda tus dependencias con:
pip freeze > requirements.txt
Paso 3: Definir las Tareas con models.py
Crea un modelo simple para las tareas utilizando Pydantic (una librería integrada en FastAPI).
from pydantic import BaseModel class Task(BaseModel): id: int title: str description: str completed: bool = False
Paso 4: Crear la API en app.py
Vamos a definir los endpoints para gestionar las tareas.
from fastapi import FastAPI, HTTPException from models import Task app = FastAPI() # Base de datos simulada tasks = [] @app.get("/") def read_root(): return {"message": "Bienvenido a la API de tareas 🚀"} @app.get("/tasks") def get_tasks(): return tasks @app.post("/tasks", status_code=201) def create_task(task: Task): tasks.append(task) return task @app.get("/tasks/{task_id}") def get_task(task_id: int): for task in tasks: if task.id == task_id: return task raise HTTPException(status_code=404, detail="Task not found") @app.put("/tasks/{task_id}") def update_task(task_id: int, updated_task: Task): for index, task in enumerate(tasks): if task.id == task_id: tasks[index] = updated_task return updated_task raise HTTPException(status_code=404, detail="Task not found") @app.delete("/tasks/{task_id}", status_code=204) def delete_task(task_id: int): global tasks tasks = [task for task in tasks if task.id != task_id] return {"message": "Task deleted"}
Paso 5: Ejecutar el Servidor
Levanta tu API con Uvicorn:
uvicorn app:app --reload
Esto abrirá tu servidor en http://127.0.0.1:8000
.
Paso 6: Probar la API con Swagger UI
Accede a la documentación automática generada por FastAPI en http://127.0.0.1:8000/docs
.
Ahí podrás interactuar con tu API y probar todos los endpoints.
Bonus: Mejorar tu API
- Persistencia de Datos: Conecta tu API a una base de datos como SQLite o MongoDB.
- Autenticación: Agrega autenticación JWT para proteger tus endpoints.
- Despliegue: Despliega tu API en servicios como Heroku o AWS.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.