fastapi/docs/fr/docs/tutorial/header-params.md

3.4 KiB

Paramètres d'en-tête

Vous pouvez définir des paramètres Header de la même manière que vous définissez des paramètres Query, Path et Cookie.

Importer Header

Commencez par importer Header :

{* ../../docs_src/header_params/tutorial001_an_py310.py hl[3] *}

Déclarer des paramètres Header

Déclarez ensuite les paramètres d'en-tête en utilisant la même structure qu'avec Path, Query et Cookie.

Vous pouvez définir la valeur par défaut ainsi que tous les paramètres supplémentaires de validation ou d'annotation :

{* ../../docs_src/header_params/tutorial001_an_py310.py hl[9] *}

/// note | Détails techniques

Header est une classe « sœur » de Path, Query et Cookie. Elle hérite également de la même classe commune Param.

Mais rappelez-vous que lorsque vous importez Query, Path, Header et d'autres depuis fastapi, ce sont en réalité des fonctions qui renvoient des classes spéciales.

///

/// info

Pour déclarer des en-têtes, vous devez utiliser Header, sinon les paramètres seraient interprétés comme des paramètres de requête.

///

Conversion automatique

Header offre un peu de fonctionnalité supplémentaire par rapport à Path, Query et Cookie.

La plupart des en-têtes standards sont séparés par un caractère « trait d'union », également appelé « signe moins » (-).

Mais une variable comme user-agent est invalide en Python.

Ainsi, par défaut, Header convertit les caractères des noms de paramètres du tiret bas (_) en trait d'union (-) pour extraire et documenter les en-têtes.

De plus, les en-têtes HTTP ne sont pas sensibles à la casse, vous pouvez donc les déclarer avec le style Python standard (aussi appelé « snake_case »).

Vous pouvez donc utiliser user_agent comme vous le feriez normalement dans du code Python, au lieu d'avoir à mettre des majuscules aux premières lettres comme User_Agent ou quelque chose de similaire.

Si, pour une raison quelconque, vous devez désactiver la conversion automatique des traits bas en traits d'union, définissez le paramètre convert_underscores de Header sur False :

{* ../../docs_src/header_params/tutorial002_an_py310.py hl[10] *}

/// warning | Alertes

Avant de définir convert_underscores sur False, gardez à l'esprit que certains proxies et serveurs HTTP interdisent l'utilisation d'en-têtes contenant des traits bas.

///

Gérer les en-têtes dupliqués

Il est possible de recevoir des en-têtes en double. Autrement dit, le même en-tête avec plusieurs valeurs.

Vous pouvez définir ces cas à l'aide d'une liste dans la déclaration de type.

Vous recevrez toutes les valeurs de l'en-tête dupliqué sous forme de list Python.

Par exemple, pour déclarer un en-tête X-Token qui peut apparaître plusieurs fois, vous pouvez écrire :

{* ../../docs_src/header_params/tutorial003_an_py310.py hl[9] *}

Si vous communiquez avec ce chemin d'accès en envoyant deux en-têtes HTTP comme :

X-Token: foo
X-Token: bar

La réponse ressemblerait à ceci :

{
    "X-Token values": [
        "bar",
        "foo"
    ]
}

Récapitulatif

Déclarez les en-têtes avec Header, en suivant le même modèle que pour Query, Path et Cookie.

Et ne vous souciez pas des traits bas dans vos variables, FastAPI s'occupe de les convertir.