Cómo construir un servicio API de alto rendimiento con FastAPI
Cómo construir un servicio API de alto rendimiento con FastAPI
FastAPI es un marco web moderno y rápido (eficiente), diseñado específicamente para construir APIs. Se basa en las sugerencias de tipo de Python y admite programación asíncrona, lo que permite a los desarrolladores construir servicios API de alto rendimiento y alta disponibilidad con baja latencia. Este artículo le mostrará en detalle cómo usar FastAPI para construir un servicio API de alto rendimiento, y lo haremos paso a paso para ayudarle a lograr todo el proceso desde la configuración del entorno hasta el despliegue.
Paso 1: Preparación del entorno
Necesita asegurarse de que tiene Python 3.6+ instalado en su entorno de desarrollo. Si aún no lo ha instalado, puede visitar la página oficial de Python para descargar e instalar.
Instalación de FastAPI y Uvicorn
FastAPI por sí mismo no proporciona un servicio, necesita un servidor ASGI para ejecutarse. Aquí utilizamos Uvicorn, un servidor ASGI de alto rendimiento. Puede instalar FastAPI y Uvicorn usando el siguiente comando:
pip install fastapi uvicorn
Paso 2: Construir la API básica
Vamos a crear una aplicación FastAPI simple.
Crear el archivo de la aplicación
En su directorio de proyecto, cree un archivo Python, por ejemplo, main.py, y escriba el siguiente código:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "¡Hola, Mundo!"}
En el código anterior, primero importamos FastAPI y creamos una instancia app. Luego, definimos una ruta GET que devuelve una simple respuesta JSON al acceder a la ruta raíz /.
Iniciar el servidor
Inicie su servidor FastAPI con el siguiente comando:
uvicorn main:app --reload
main: se refiere al nombre del archivo, sin la extensión .py.app: se refiere a la instancia de FastAPI.--reload: en modo de desarrollo, reinicia automáticamente el servidor cuando hay cambios en los archivos.
Paso 3: Definir rutas y modelos de datos
Para construir APIs complejas, necesita usar Pydantic para definir modelos de datos.
Crear un modelo de datos
Agregue el siguiente contenido en main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Este código utiliza Pydantic para crear un modelo de datos Item, que contiene tres atributos: nombre del producto, precio y disponibilidad.
Agregar nuevas rutas
A continuación, podemos definir una nueva ruta POST para recibir datos del tipo Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
En esta ruta, FastAPI validará automáticamente los datos entrantes y los mapeará al modelo Item.
Paso 4: Generación automática de documentación
Una de las mayores ventajas de FastAPI es que puede generar documentación API automáticamente. Puede ver la documentación accediendo a las siguientes direcciones:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
En esta documentación generada, puede probar la API de forma interactiva y ver el formato de solicitud y respuesta de cada ruta.
Paso 5: Agregar autenticación
En aplicaciones reales, la autenticación es un aspecto importante. Vamos a agregar una autenticación simple basada en roles.
Agregar dependencias de seguridad
Utilice el método Depends de FastAPI y OAuth2PasswordBearer para implementar la autenticación:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Credenciales de autenticación no válidas")
return user
Proteger rutas
Luego, puede agregar autenticación a las rutas que necesitan protección:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Paso 6: Desplegar la aplicación FastAPI
Una vez que haya terminado el desarrollo, es posible que desee desplegar la aplicación en un servidor en la nube. Puede optar por usar Docker para el despliegue.
Crear Dockerfile
En el directorio del proyecto, cree un archivo llamado Dockerfile y escriba el siguiente contenido:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Construir la imagen de Docker
En su terminal, use el siguiente comando para construir la imagen de Docker:
docker build -t myfastapiapp .
Ejecutar el contenedor de Docker
Ejecute su aplicación FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Resumen
En este artículo, hemos explicado en detalle cómo usar FastAPI para construir un servicio API de alto rendimiento, desde la preparación del entorno hasta la creación de una API básica, la definición de rutas y modelos de datos, y luego la adición de autenticación y el despliegue. FastAPI ofrece muchas funciones poderosas que hacen que construir APIs modernas sea simple y eficiente. Puede explorar más funciones y características a través de la documentación oficial. ¡Esperamos que este artículo le ayude a comenzar rápidamente con FastAPI y a mejorar la eficiencia de desarrollo de su proyecto!





