Parámetros de Header¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
Puedes definir los parámetros de Header de la misma manera que defines los parámetros deQuery,Path yCookie.
ImportarHeader¶
Primero importaHeader:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:Annotated[str|None,Header()]=None):return{"User-Agent":user_agent}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:str|None=Header(default=None)):return{"User-Agent":user_agent}Declarar parámetros deHeader¶
Luego declara los parámetros de header usando la misma estructura que conPath,Query yCookie.
Puedes definir el valor por defecto así como toda la validación extra o los parámetros de anotaciones:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:Annotated[str|None,Header()]=None):return{"User-Agent":user_agent}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(user_agent:str|None=Header(default=None)):return{"User-Agent":user_agent}Detalles Técnicos
Header es una clase "hermana" dePath,Query yCookie. También hereda de la misma clase comúnParam.
Pero recuerda que cuando importasQuery,Path,Header, y otros defastapi, en realidad son funciones que retornan clases especiales.
Información
Para declarar headers, necesitas usarHeader, porque de otra forma los parámetros serían interpretados como parámetros de query.
Conversión automática¶
Header tiene un poquito de funcionalidad extra además de lo que proporcionanPath,Query yCookie.
La mayoría de los headers estándar están separados por un carácter "guion", también conocido como el "símbolo menos" (-).
Pero una variable comouser-agent es inválida en Python.
Así que, por defecto,Header convertirá los caracteres de los nombres de los parámetros de guion bajo (_) a guion (-) para extraer y documentar los headers.
Además, los headers HTTP no diferencian entre mayúsculas y minúsculas, por lo que los puedes declarar con el estilo estándar de Python (también conocido como "snake_case").
Así que, puedes usaruser_agent como normalmente lo harías en código Python, en lugar de necesitar capitalizar las primeras letras comoUser_Agent o algo similar.
Si por alguna razón necesitas desactivar la conversión automática de guiones bajos a guiones, establece el parámetroconvert_underscores deHeader aFalse:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(strange_header:Annotated[str|None,Header(convert_underscores=False)]=None,):return{"strange_header":strange_header}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(strange_header:str|None=Header(default=None,convert_underscores=False),):return{"strange_header":strange_header}Advertencia
Antes de establecerconvert_underscores aFalse, ten en cuenta que algunos proxies y servidores HTTP no permiten el uso de headers con guiones bajos.
Headers duplicados¶
Es posible recibir headers duplicados. Eso significa, el mismo header con múltiples valores.
Puedes definir esos casos usando una lista en la declaración del tipo.
Recibirás todos los valores del header duplicado como unalist de Python.
Por ejemplo, para declarar un header deX-Token que puede aparecer más de una vez, puedes escribir:
fromtypingimportAnnotatedfromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(x_token:Annotated[list[str]|None,Header()]=None):return{"X-Token values":x_token}🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,Headerapp=FastAPI()@app.get("/items/")asyncdefread_items(x_token:list[str]|None=Header(default=None)):return{"X-Token values":x_token}Si te comunicas con esapath operation enviando dos headers HTTP como:
X-Token: fooX-Token: barEl response sería como:
{"X-Token values":["bar","foo"]}Recapitulación¶
Declara headers conHeader, usando el mismo patrón común queQuery,Path yCookie.
Y no te preocupes por los guiones bajos en tus variables,FastAPI se encargará de convertirlos.







