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

如何通过FastAPI避免GET请求中的+符号被替换为空格?

解决FastAPI中GET参数+被替换为空格的问题

HTTP标准规定,URL查询参数中的+会被解析为空格,这是HTTP客户端的默认行为,并非FastAPI的问题。以下两种方式可规避该情况:

方法一:请求端按规范编码+

将请求中的+替换为URL编码值%2B,示例请求URL:
http://127.0.0.1:8000/?q=1%2B1
此时后端直接接收参数即可得到原始的1+1。

方法二:后端手动解析原始查询字符串

通过FastAPI的Request对象获取原始查询参数,绕过默认的解析逻辑,手动处理以保留+:

from fastapi import FastAPI, Request
from urllib.parse import unquote

app = FastAPI()

@app.get('/')
async def root(request: Request):
    query_str = request.url.query
    q = ""
    if query_str:
        for param in query_str.split('&'):
            if '=' in param:
                key, value = param.split('=', 1)
                if key == 'q':
                    # 使用unquote而非unquote_plus,避免将+替换为空格
                    q = unquote(value)
                    break
    return {"message": q}

当发起http://127.0.0.1:8000/?q=1+1请求时,该接口会返回{"message":"1+1"}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:30:50