typestar

Middleware en Python

Un middleware envuelve cada petición: tiempos, encabezados, logging.

import time

from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.testclient import TestClient

app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["https://typestar.io"])


@app.middleware("http")
async def medir_tiempo(request: Request, call_next):
    inicio = time.perf_counter()
    respuesta = await call_next(request)
    transcurrido = (time.perf_counter() - inicio) * 1000
    respuesta.headers["X-Elapsed-Ms"] = f"{transcurrido:.1f}"
    return respuesta


@app.get("/ping")
def ping():
    return {"pong": True}


cliente = TestClient(app)
respuesta = cliente.get("/ping")
print(respuesta.json(), "X-Elapsed-Ms" in respuesta.headers)

Cómo funciona

  1. La función recibe la petición y un call_next.
  2. Lo que devuelva es la respuesta que el cliente recibe.
  3. CORS es un middleware que el framework trae incluido.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
27
Caracteres a escribir
682
Tokens
159
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 87 segundos.

Escribe este fragmento

Paso 3 de 3 en Dependencias y async; paso 12 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →

Middleware en otros lenguajes