Contenidos
Instalación de FastAPI
1 2 |
# Primero, instala FastAPI y Uvicorn usando pip # pip install fastapi uvicorn |
Crear una API simple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from fastapi import FastAPI # Crear una instancia de FastAPI app = FastAPI() # Definir una ruta simple @app.get("/") def read_root(): return {"Hello": "World"} # Definir una ruta con parámetros @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} |
Ejecutar el servidor
1 2 |
# Guarda el archivo anterior como main.py y ejecuta el servidor usando Uvicorn # uvicorn main:app --reload |
Usar parámetros de consulta y rutas
1 2 3 4 5 6 7 8 9 10 11 12 |
from fastapi import FastAPI from typing import Optional app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: Optional[str] = None): return {"item_id": item_id, "q": q} @app.get("/users/{user_id}/items/{item_id}") def read_user_item(user_id: int, item_id: int): return {"user_id": user_id, "item_id": item_id} |
Crear y usar modelos con Pydantic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str description: str = None price: float tax: float = None @app.post("/items/") def create_item(item: Item): return {"item": item} |
Manejo de errores
1 2 3 4 5 6 7 8 9 |
from fastapi import FastAPI, HTTPException app = FastAPI() @app.get("/divide/{x}/{y}") def divide(x: int, y: int): if y == 0: raise HTTPException(status_code=400, detail="Division by zero is not allowed") return {"result": x / y} |