Configuración de un proyecto FastAPI y primer endpoint
Instale FastAPI, cree un proyecto y escriba su primer endpoint GET.
Configuración de un proyecto FastAPI y primer endpoint es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es FastAPI?
FastAPI es un framework web moderno de Python para crear API REST. Proporciona documentación OpenAPI automática, modelos de solicitudes y respuestas con comprobación de tipos mediante Pydantic y un rendimiento nativo asíncrono.
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, FastAPI"}Ejecución del servidor
Ejecute el servidor con uvicorn. La opción --reload lo reinicia automáticamente cuando se producen cambios en el código durante el desarrollo.
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health(): return {"status": "ok"}
# Terminal:
# uvicorn main:app --reload
# → http://127.0.0.1:8000
# → http://127.0.0.1:8000/docs (Swagger UI)Métodos HTTP
Decore las funciones de las rutas con @app.get, @app.post, @app.put, @app.delete o @app.patch.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(): return []
@app.post("/items")
def create_item(): return {"id": 1}
@app.delete("/items/{item_id}")
def delete_item(item_id: int): return {"deleted": item_id}Parámetros de ruta
Declare los parámetros de ruta en la cadena de la ruta con {name} y como argumentos de la función con anotaciones de tipo.
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id, "name": "Alice"}
# GET /users/42 → {"user_id": 42, "name": "Alice"}Parámetros de consulta
Los parámetros de función que no aparecen en la ruta se convierten en parámetros de consulta.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
return {"skip": skip, "limit": limit, "q": q}
# GET /items?skip=5&limit=20&q=searchCuerpo de solicitud con Pydantic
Use un BaseModel de Pydantic como tipo del parámetro para declarar y validar un cuerpo de solicitud JSON.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool = True
@app.post("/items")
def create_item(item: Item):
return {"received": item.model_dump()}Errores de validación de Pydantic
Si el cuerpo de la solicitud no coincide con el esquema, FastAPI devuelve automáticamente un error 422 Unprocessable Entity con un mensaje detallado.
# POST /items with body {"name": 123}
# → HTTP 422 Unprocessable Entity
# {
# "detail": [
# {
# "type": "string_type",
# "loc": ["body","name"],
# "msg": "Input should be a valid string"
# }
# ]
# }Modelos de respuesta
Use response_model= para declarar lo que devuelve el endpoint. FastAPI valida la respuesta y filtra los campos adicionales.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserOut(BaseModel):
id: int
name: str
@app.get("/users/{uid}", response_model=UserOut)
def get_user(uid: int):
return {"id": uid, "name": "Alice", "password": "secret"} # password filtered outCódigos de estado
Establezca el código de estado predeterminado para respuestas correctas con status_code=. Importe los códigos habituales desde fastapi.status.
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item():
return {"id": 1}
# HTTP 201 Created is returned on successHTTPException
Lance HTTPException para devolver una respuesta de error con un código de estado y un mensaje detallado personalizados.
from fastapi import FastAPI, HTTPException
app = FastAPI()
fake_db = {1: "Alice"}
@app.get("/users/{uid}")
def get_user(uid: int):
if uid not in fake_db:
raise HTTPException(status_code=404, detail="User not found")
return {"name": fake_db[uid]}Documentación automática
FastAPI genera automáticamente Swagger UI en /docs y ReDoc en /redoc a partir de las anotaciones de sus rutas.
# After starting with uvicorn:
# http://localhost:8000/docs — Swagger UI (try the API live)
# http://localhost:8000/redoc — ReDoc (clean docs view)
# http://localhost:8000/openapi.json — raw OpenAPI schemaComprobación rápida
¿Cómo se declara en FastAPI un parámetro obligatorio de cuerpo de solicitud JSON?
Resumen
Las rutas de FastAPI son funciones decoradas: los parámetros de ruta se incluyen en la URL, los parámetros de consulta se definen como argumentos tipados y los cuerpos de solicitud se representan mediante modelos de Pydantic. Lance HTTPException para los errores. Swagger UI se genera automáticamente en /docs.
Preguntas frecuentes
¿La lección «Configuración de un proyecto FastAPI y primer endpoint» es gratis?
Sí — el texto completo de «Configuración de un proyecto FastAPI y primer endpoint» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración de un proyecto FastAPI y primer endpoint»?
Instale FastAPI, cree un proyecto y escriba su primer endpoint GET. Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Configuración de un proyecto FastAPI y primer endpoint»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configuración de un proyecto FastAPI y primer endpoint
- Parámetros de ruta, parámetros de consulta y cuerpos de solicitud
- Inyección de dependencias y autenticación
- Endpoints asíncronos e integración con bases de datos