标签:请求 FastAPI app Header 参数 import Optional
定义Header
参数的方式与定义Query
、Path
、Cookie
参数相同。
第一个值是默认值,还可以传递所有验证参数或注释参数:
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}
自动转换
Header
比Path
、Query
和Cookie
提供了更多功能。大部分标准请求头用连字符分隔,即减号,但是user-agent
这样的变量在python中无效的,因此,在默认情况下,Header
把参数名中的字符由下划线改为连字符来提取并存档请求头,同时,HTTP的请求头不区分大小写,可以使用Python标准样式进行声明,因此,可以像在Python代码中一样使用User_agent
,无需把首字母大写为User_Agent
等形式,如需禁用下画线自动转换为连字符,可以把Header
的convert_underscores
参数设置为False
:
from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: Optional[str] = Header(None, convert_underscores=False)
):
return {"strange_header": strange_header}
重复的请求头
有时,可能需要接收重复的请求头,即同一个请求头有多值,类型声明中可以使用list定义多个请求头。使用Python list可以接收重复请求头所有的值。
例如:声明X-Token多次出现的请求头,可以写成这样:
from typing import List, Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_item(x_token: Optional[List[str]] = Header(None)):
return {"X-Token value": x_token}
与路径操作通信时,以下面的方式发送两个HTTP请求头:
X-Token: foo
X-Token: bar
响应结果:
{
"X-Token values": [
"bar",
"foo"
]
}
标签:请求,FastAPI,app,Header,参数,import,Optional 来源: https://www.cnblogs.com/litianming/p/16225382.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。