Creación de API REST con FastAPI: un marco moderno de Python

Guía paso a paso para crear una API RESTful utilizando FastAPI, incluyendo la creación de puntos finales, la validación y la implementación.

Aprenda a crear una API RESTful utilizando FastAPI en Python con esta guía paso a paso. Cubrimos la creación de puntos finales, la validación de entradas con Pydantic y las estrategias de implementación para una API moderna y de alto rendimiento.

Programación
Autor/a
Afiliación
Fecha de publicación

8 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

Tutorial de FastAPI, REST API Python FastAPI, Crear una API con FastAPI, Guía de FastAPI, API REST de Python

Introducción

FastAPI es un marco web moderno y de alto rendimiento para crear API RESTful con Python. Aprovechando la programación asíncrona y la validación automática de datos, FastAPI le permite crear API escalables de forma rápida y eficiente. En este tutorial, aprenderá a crear una API real que sirva datos de productos para un escenario de comercio electrónico. Cubriremos la creación de puntos finales, la validación de entradas utilizando modelos Pydantic, la ejecución y prueba de la API, y la exploración de estrategias de implementación para una API de nivel de producción.



Importación de paquetes necesarios

Para mantener nuestro código organizado y evitar repeticiones, comenzamos importando los paquetes necesarios. Esto garantiza que todos los bloques de código posteriores tengan acceso a las bibliotecas necesarias.

#|label: import-packages
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

Creación de una aplicación FastAPI básica con datos de ejemplos reales

Comenzaremos inicializando una aplicación FastAPI y creando puntos finales. En nuestro ejemplo, la API servirá datos de productos para un escenario de comercio electrónico.

API básica Ejemplo

#|label: create-app
app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Welcome to the FastAPI Products API!"}

class Product(BaseModel):
    id: int
    name: str
    price: float
    category: str

# Datos de producto de muestra.
products = [
    {"id": 1, "name": "Wireless Mouse", "price": 29.99, "category": "Electronics"},
    {"id": 2, "name": "Bluetooth Headphones", "price": 59.99, "category": "Electronics"},
    {"id": 3, "name": "Coffee Maker", "price": 79.99, "category": "Home Appliances"},
    {"id": 4, "name": "Electric Kettle", "price": 39.99, "category": "Home Appliances"},
    {"id": 5, "name": "Smartphone Stand", "price": 19.99, "category": "Accessories"}
]

@app.get("/api/products", response_model=list[Product])
def get_products():
    return products

if __name__ == "__main__":
    # Ejecuta la aplicación en el puerto 8000 con la depuración habilitada.
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Ejecución y prueba de la API

Para ejecutar tu API Flask, ejecuta tu script utilizando, por ejemplo, python api.py.

Nota

Una vez que su API esté en funcionamiento, puede acceder a ella visitando http://localhost:5000/ en su navegador web.

Probar la API

Pruebe su API con cURL o Postman. Por ejemplo, puedes ejecutar los siguientes comandos en tu terminal:

curl http://127.0.0.1:8000/
curl http://127.0.0.1:8000/api/products

Estos comandos deberían devolver respuestas JSON con un mensaje de bienvenida y los datos del producto, respectivamente.

Gestión de errores y validación de entradas

FastAPI utiliza modelos Pydantic para validar los datos de entrada. Además, un manejo adecuado de los errores garantiza que la API responda correctamente a las solicitudes incorrectas.

Ejemplo: Punto final mejorado con validación

#|label: enhanced-endpoint
@app.get("/api/product/{product_id}", response_model=Product)
def get_product(product_id: int):
    for product in products:
        if product["id"] == product_id:
            return product
    raise HTTPException(status_code=404, detail="Product not found")

Este punto final recupera un producto por su ID y, si no lo encuentra, genera un error 404.

Estrategias de implementación

Para la implementación en producción, tenga en cuenta estas estrategias:

  • Uvicorn con Gunicorn:
    Implementa tu aplicación FastAPI utilizando Gunicorn con trabajadores Uvicorn para mejorar el rendimiento:

    gunicorn --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 your_script:app
  • Contenedorización:
    Utiliza Docker para contenerizar tu aplicación. A continuación se muestra un ejemplo de Dockerfile.

Ejemplo de Dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000", "your_script:app"]

Reemplaza your_script por el nombre de tu archivo Python que contiene la aplicación FastAPI.

Ejecutar y probar la API (resumen)

Una vez implementado, utiliza herramientas como cURL, Postman o marcos de pruebas automatizadas para verificar tus puntos finales y asegurarte de que tu API se comporta como se espera en producción.

Conclusión

FastAPI proporciona un marco moderno, eficiente y fácil de usar para crear API RESTful en Python. Siguiendo esta guía, habrás aprendido a crear una API real con datos de productos, implementar la validación de entradas y la gestión de errores, y explorar estrategias de implementación para aplicaciones de nivel de producción. Con estas habilidades, puedes crear API escalables que impulsen aplicaciones web modernas y servicios basados en datos.

Lecturas adicionales

Feliz programación y disfruta creando e implementando tu API RESTful con FastAPI!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

placeholder

placeholder
No hay resultados
Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Creación de API REST con FastAPI: un marco moderno de Python},
  date = {2024-02-08},
  url = {https://www.datanovia.com/es/learn/programming/python/tools/fastapi-rest-api.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Creación de API REST con FastAPI: un marco moderno de Python.” February 8, 2024. https://www.datanovia.com/es/learn/programming/python/tools/fastapi-rest-api.html.