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

Python中如何将FastAPI请求的URL编码字节流转换为原始输入字符串

问题解决:FastAPI请求体URL编码内容还原

你当前获取到的请求体是application/x-www-form-urlencoded类型的编码数据,普通UTF-8解码仅完成字节到字符串的转换,不会处理URL编码规则下的转义字符,包括:

  • + 是该编码格式中空格的替代符号
  • %开头的十六进制序列是特殊字符的转义表达,比如%3D对应=、%22对应双引号
解决方法

使用Python标准库urllib.parse中的unquote_plus方法处理解码后的字符串,即可还原原始输入内容,修改后的代码如下:

from fastapi import Request
from urllib.parse import unquote_plus

async def my_action(request: Request):
    data = await request.body()
    # 先完成字节到字符串的转码,再做URL编码还原
    raw_input = unquote_plus(data.decode("utf-8"))
    print(raw_input)
输出验证

运行上述代码后,输出内容和输入完全一致:

process query=my_event my_User=king Prop_A="Prop Val" Prop_B=Val_B other=1 Minutes
拓展提示

如果你的需求是单独获取每个参数的取值,不需要手动解析原始内容,直接调用FastAPI内置的表单解析方法即可:

async def my_action(request: Request):
    form_data = await request.form()
    # 直接通过参数名取值,例如 form_data["process query"] 即可得到 "my_event"

内容的提问来源于stack exchange,提问作者Parashuram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:54:08