Configuración y Uso de FastAPI para consumir APIs
FastAPI se caracteriza por su facilidad de uso y su capacidad para crear APIs RESTful de forma rápida y sencilla. En este apartado se muestra cómo configurar y utilizar FastAPI para consumir APIs para este ejemplo consumiremos la API de https://fakestoreapi.com/.
Creación de un entorno virtual
Para empezar, se debe crear un entorno virtual e instalar FastAPI y Uvicorn. Para ello, se ejecutan los siguientes comandos:
python3 -m venv env
source env/bin/activate
pip install fastapi uvicorn httpx pydantic
Nuestro proyecto tendrá la siguiente estructura:
proyecto/
│
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── models.py
│ ├── routes.py
│
├── .gitignore
├── README.md
├── requirements.txt
En el directorio app/ se encuentra el archivo routes.py que contiene la definición de las rutas de la API. Vamos a crear los modelos, las rutas y las validaciones para consumir la API de <fakestoreapi.com>. A continuación se muestra el contenido del archivo models:
from pydantic import BaseModel
class Product(BaseModel):
id: int
str
title: float
price: str
description: str
category: str image:
En el ejemplo anterior se define el modelo Product que hereda de la clase BaseModel de Pydantic. El modelo tiene los campos id, title, price, description, category e image que representan los datos de los productos.
Consumo de la API
A continuación se muestra el contenido del archivo routes.py que contiene la definición de las rutas de la API:
from fastapi import APIRouter, HTTPException
from httpx import AsyncClient
from .models import Product
= APIRouter()
router
@router.get("/products/")
async def read_products():
async with AsyncClient() as client:
= await client.get("https://fakestoreapi.com/products")
response = response.json()
products return products
@router.get("/products/{product_id}")
async def read_product(product_id: int):
async with AsyncClient() as client:
= await client.get(f"https://fakestoreapi.com/products/{product_id}")
response = response.json()
product return product
@router.post("/products/")
async def create_product(product: Product):
async with AsyncClient() as client:
= await client.post("https://fakestoreapi.com/products", json=product.dict())
response = response.json()
product return product
@router.put("/products/{product_id}")
async def update_product(product_id: int, product: Product):
async with AsyncClient() as client:
= await client.put(f"https://fakestoreapi.com/products/{product_id}", json=product.dict())
response = response.json()
product return product
@router.delete("/products/{product_id}")
async def delete_product(product_id: int):
async with AsyncClient() as client:
= await client.delete(f"https://fakestoreapi.com/products/{product_id}")
response = response.json()
product return product
En el ejemplo anterior se definen las rutas para consumir la API de <fakestoreapi.com>. Las rutas read_products y read_product permiten obtener la lista de productos y un producto en particular, respectivamente. Las rutas create_product, update_product y delete_product permiten crear, actualizar y eliminar un producto, respectivamente.
Ejecución de la API
Para ejecutar la API, se debe crear un archivo main.py en el directorio app/ con el siguiente contenido:
from fastapi import FastAPI
from .routes import router
= FastAPI()
app
app.include_router(router)
Para ejecutar la API, se utiliza el siguiente comando:
uvicorn app.main:app --reload
Una vez que la API esté en ejecución, se pueden realizar peticiones a las rutas definidas en el archivo routes.py. Por ejemplo, para obtener la lista de productos se puede acceder a la URL http://127.0.0.1:8000/products/.
Pruebas de la API
Para probar la API se puede utilizar un cliente HTTP como Thunder Client en Visual Studio Code o Postman. También se puede acceder a la documentación interactiva de la API en http://127.0.0.1:8000/docs para probar las rutas y ver los resultados de las peticiones.
En este apartado se mostró cómo configurar y utilizar FastAPI para consumir APIs. FastAPI facilita la creación de APIs RESTful y permite consumir APIs de forma sencilla y eficiente. En el siguiente apartado se mostrará cómo realizar pruebas unitarias a las rutas de la API creada en este apartado.
En este apartado se mostró cómo configurar y utilizar FastAPI para consumir APIs. FastAPI facilita la creación de APIs RESTful y permite consumir APIs de forma sencilla y eficiente. En el siguiente apartado se mostrará cómo realizar pruebas unitarias a las rutas de la API creada en este apartado.