web-dev-qa-db-fra.com

Python / Fastapi: Comment puis-je obtenir des en-têtes ou un en-tête spécifique de mon API backend?

Je veux récupérer un en-tête spécifique de mon API à l'intérieur d'une fonction avec Fastapi, mais je ne peux pas trouver une solution pour cela.

In flask était simplement: request.headers['your-header-name']

Pourquoi l'enfer avec Fastapi est si compliqué de faire une chose simple comme ça?

Quelqu'un connaît une solution pour récupérer une en-tête? Merci :)

Le décorateur:

def token_required(f):
    @wraps(f)
    def decorator(*args, **kwargs):
        CONFIG = settings.read_config()
        token = None
        headers = Request.headers
        if "Authorization" in headers:
            auth_header = Request.headers
            token = auth_header
        Elif not token:
            return {"Error": "Token is missing or incorrect header name"}, 401

        try:
            public_key = CONFIG["APPLICATION"]["PUBLIC_KEY"]
            claim = jwt.decode(token, public_key)
            claim.validate()
        except UnicodeDecodeError as err:
            return {"Error": f"An error occurred -> {err} check your token"}, 401

        return f(*args, **kwargs)

    return decorator

J'ai besoin de lire l'en-tête de "autorisation" pour vérifier si vous exister ou non.

2
Melom

Ou, comme décrit dans la documentation Fastapi ( https://fastapi.tiangolo.com/tatutorial/header-params/ ):

from typing import Optional

from fastapi import FastAPI, Header

app = FastAPI()


@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
    return {"User-Agent": user_agent}

cela va chercher le user_agent Paramètre d'en-tête.

0
Valentin Dumitru