0Pricing
Python Academy · Lección

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=search

Cuerpo 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 out

Có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 success

HTTPException

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 schema

Comprobació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

  1. Configuración de un proyecto FastAPI y primer endpoint
  2. Parámetros de ruta, parámetros de consulta y cuerpos de solicitud
  3. Inyección de dependencias y autenticación
  4. Endpoints asíncronos e integración con bases de datos
← Volver a Python Academy