第7节,获取请求的headers

1. 通过Header 获取请求的headers

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。

2. 使用Request 对象

如果我想获取多个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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案