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
= FastAPI()
app
@app.get("/")
def read_root():
return {"message": "Welcome to the FastAPI Products API!"}
class Product(BaseModel):
id: int
str
name: float
price: str
category:
# 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
="0.0.0.0", port=8000) uvicorn.run(app, host
Ejecución y prueba de la API
Para ejecutar tu API Flask, ejecuta tu script utilizando, por ejemplo, python api.py
.
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
- Cree su primera API con Flask
- Web Scraping con BeautifulSoup
- Automatización en Python: programación y automatización de tareas
Feliz programación y disfruta creando e implementando tu API RESTful con FastAPI!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@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}
}