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

如何从gevent WSGI服务器请求中获取所有查询字符串参数?

解决gevent WSGI服务器仅获取第一个查询参数的问题

嘿,这个坑我之前也踩过!其实你的服务器代码本身没毛病,parse_qs完全支持解析多个查询参数,问题出在你执行curl命令的方式上。

问题根源

在shell环境里,&是个特殊符号,作用是把命令放到后台运行。当你直接敲curl localhost:5000?goat=pig&piano=guitar时,shell会把这条命令拆成两部分:

  • 第一部分:curl localhost:5000?goat=pig(这部分会被立即执行)
  • 第二部分:piano=guitar(被当成后台无意义命令执行)

所以服务器实际收到的查询字符串只有goat=pig,自然只能解析出第一个参数。

解决办法

你只需要让shell把&当成URL的一部分,而不是特殊符号,两种方式都可以:

方式1:用双引号包裹整个URL

curl "localhost:5000?goat=pig&piano=guitar"

方式2:转义&符号

curl localhost:5000?goat=pig\&piano=guitar

执行任意一种方式后,服务器就能正确拿到完整的查询字符串,解析出预期结果:

{'goat': ['pig'], 'piano': ['guitar']}

顺带确认下,你的服务器代码里parse_qs(env.get('QUERY_STRING',''))的写法是没问题的,只要能拿到完整的查询参数,就能正常解析所有键值对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:47:33