FastAPI提供了一种有别于其他python web框架获取headers的方法,如果你已经习惯了Flask,django等框架,可能对于FastAPI提供的方式会有一些不适应,下面的例子展示如何获取headers里的User-Agent
from typing import Optional
from fastapi import FastAPI, Form, Header
app = FastAPI()
@app.get('/index')
def index(user_agent: Optional[str] = Header(None)):
return {"User-Agent": user_agent}
在浏览器里访问 http://127.0.0.1:8000/index,得到返回结果
{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36"}
许多header 使用-连接,比如User-Agent, 这种变量命名方式是不允许的,因此在定义参数时,需要以下划线来替代-, 此外,在处理header时支持大小写不敏感,想要获取User-Agent,在参数定义时写成user_agent就可以了,不能忽视的一点,一定要在设置默认值时显示标识Header。
如果我想获取多个header,难道要在函数定义时逐个进行定义么,这显然过于麻烦了,这是我接触FastAPI 处理header方法时的第一感觉,经过一番努力,找到了更方便的办法
from fastapi import FastAPI, Header, Request
app = FastAPI()
@app.get('/index')
def index(request: Request):
return {"headers": request.headers}
在定义index函数时,增加参数request,类型标注为Request,就可以通过request.headers获取到全部的header,FastAPI的request对象和Flask的request对象很相似。
QQ交流群: 211426309