FastAPI(18)- 详解 Header,获取请求头

简介: FastAPI(18)- 详解 Header,获取请求头

查看一个接口的 Header


进到某个网站,右键检查元素;或者直接 F12

找到 Network,选择一个请求,就能看到 Request Header、Response Header 啦

image.png

FastAPI 提供的 Header


  • Header 是 Path、Query、Cookie 的“姐妹”类
  • 它也继承自相同的通用 Param 类
  • 注意:从 fastapi 导入 Query、Path、Cookie、Header 等时,这些实际上是返回特殊类的函数

image.png


新增了一个参数,默认值是 True,盲猜是跟转换下换线有关系

 

获取 Header 的栗子


#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠萝测试笔记
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/9/21 2:39 下午
# file: 15_cookies.py
"""
from typing import Optional
import uvicorn
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(accept_encoding: Optional[str] = Header(None)):
    return {"Accept-Encoding": accept_encoding}
if __name__ == "__main__":
    uvicorn.run(app="16_Header:app", host="127.0.0.1", port=8080, reload=True, debug=True)


浏览器访问该接口

image.png


可以看到,获取的是 Request Header 里面的值

 

提出疑问:函数参数命名为 accept_encoding 为什么能识别到 Accept-Encoding?

  • 首先,Accept-Encoding 这种变量名在 Python 是无效的
  • 因此, Header 默认情况下,会用下划线 _ 代替 - ,这就是 convert_underscores 参数的作用
  • 重点:HTTP Header 是不区分大小写的,所以写 accept_encoding 还是 Accept_Encoding 是一样效果的

 

多个重名 Header


假设一个 Request Header 里面有多个重名的 Header,那可以用 List[str] 来声明参数类型

@app.get("/items/")

async def read_items(x_token: Optional[List[str]] = Header(None)):

   return {"X-Token values": x_token}

 

 

假设 Request Header 有两个重名的 Header

X-Token: foo

X-Token: bar

 

访问 /items/ 接口得到的响应体会是

x_token 就是一个列表

{

   "X-Token values": [

       "bar",

       "foo"

   ]

}

 

设置 Response Header


from starlette.responses import JSONResponse
@app.get("/header/")
def Login():
    content = {
        "name": "poloyy",
        "age": 10
    }
    response = JSONResponse(content=content)
    token = {
        "x-token-name": "token",
        "x-token-value": "test_header"
    }
    # 设置 Header
    response.init_headers(token)
    return response


这里会用到 FastAPI 提供的响应模型,后面会详解,这里先做了解

方便演示,这里用 get 请求

 

浏览器访问该接口

image.png

相关文章
|
数据库
FastAPI(53)- Response Headers 响应设置 Headers
FastAPI(53)- Response Headers 响应设置 Headers
573 0
FastAPI(53)- Response Headers 响应设置 Headers
|
前端开发 Java 程序员
如何在swagger2中配置header请求头等参数信息?(若不会,我便手把手教你)
如何在swagger2中配置header请求头等参数信息?(若不会,我便手把手教你)
2906 1
|
安全 Python Windows
python - http请求带Authorization
# 背景 接入公司的一个数据统计平台,该平台的接口是带上了Authorization验证方式来保证验签计算安全   # 方法 其实很简单,就是在header中加入key=Authorization,value是协商好的协议即可; 如,我们这边是base64.
4690 0
|
3月前
|
JSON 中间件 数据格式
django获取request请求头信息,获取Content-Type
django获取request请求头信息,获取Content-Type
53 4
|
4月前
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
7月前
|
API Python
使用Python获取HTTP请求头数据
在Python Web开发中,`requests`库用于发送HTTP请求,请求头是关键元素,包含客户端信息和请求详情。要查看请求头,先创建`Request`对象,打印其`headers`属性,然后使用`get`等方法发送请求并获取响应头。别忘了处理不同HTTP方法、内容类型以及异常。使用`Session`管理会话状态,并考虑日志记录以调试。通过控制请求头,能有效与服务器通信。
FastAPI(54)- 详解 Request 请求对象(上)
FastAPI(54)- 详解 Request 请求对象(上)
630 0
|
缓存 Linux Apache
Requests Header | Http Header
Requests Header | Http Header
|
JSON IDE API
FastAPI(8)- 请求体 Request Body (下)
FastAPI(8)- 请求体 Request Body (下)
304 0
FastAPI(8)- 请求体 Request Body (下)
|
XML 数据格式
FastAPI(47)- 通过 Response 自定义响应的类型
FastAPI(47)- 通过 Response 自定义响应的类型
322 0
FastAPI(47)- 通过 Response 自定义响应的类型