You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将requests库POST请求的response.request.body转换为字典?

如何将POST请求的body字符串转回字典(基于requests库)

当使用Python的requests库发送POST请求时,传入的data字典会被自动编码为application/x-www-form-urlencoded格式的字符串:

import requests
response = requests.post("https://httpbin.org", data={"x": 100, "y": 200})
# 注:httpbin.org根路径不接受POST请求,返回405状态码,但不影响后续演示

通过response.request可以访问原始请求对象,进而获取编码后的请求body:

response.request.body
# 输出结果:'x=100&y=200'

问题

如何将这个编码后的body字符串转回最初的字典格式,无需手动解析字符串,借助现成库函数实现?

解决方案

可以使用Python标准库urllib.parse中的parse_qs或parse_qsl函数,这两个函数专门用于解析URL编码的表单数据,不管是URL查询参数还是POST请求的body(只要是application/x-www-form-urlencoded格式)都适用。

示例代码

from urllib.parse import parse_qs, parse_qsl

# 获取编码后的body字符串
body_str = response.request.body

# 方法1:使用parse_qs,返回值为值是列表的字典
parsed_dict = parse_qs(body_str)
print(parsed_dict)
# 输出:{'x': ['100'], 'y': ['200']}

# 若确定每个参数只有一个值,可转为普通字典
single_value_dict = {key: value[0] for key, value in parsed_dict.items()}
print(single_value_dict)
# 输出:{'x': '100', 'y': '200'}

# 方法2:使用parse_qsl,返回键值对元组列表,再转为字典
parsed_list = parse_qsl(body_str)
print(dict(parsed_list))
# 输出:{'x': '100', 'y': '200'}

补充说明

  • parse_qs会将每个参数的值存储为列表,这是因为HTTP表单允许同一参数名对应多个值(比如多选框场景),如果你的业务场景中每个参数仅对应一个值,用字典推导式转换即可。
  • parse_qsl直接返回(key, value)格式的元组列表,转换为字典时会自动保留同一参数的最后一个值,适合参数唯一的场景。

内容的提问来源于stack exchange,提问作者Wör Du Schnaffzig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:31:21