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

Falcon服务接收多参数仅第一个生效,如何调整客户端与服务端代码?

问题核心原因

  • 客户端执行curl时,shell会把&识别为后台运行命令的标识符,导致time=1参数没有被实际发送到服务端
  • 你使用的服务端路由为/func,curl调用时路径写为/servicedb,路由不匹配也会导致请求异常
  • Falcon框架已内置查询参数解析能力,无需手动拆分URI解析,手动解析容易出现编码、格式兼容问题

客户端正确调用方式

二选一即可:

  • 用引号包裹整个URL,避免shell解析特殊字符:
curl 'http://localhost:8000/func?limit=12&time=1'
  • 转义&字符:
curl http://localhost:8000/func?limit=12\&time=1

服务端正确代码

直接使用Falcon Request对象内置的params属性获取所有解析完成的查询参数,更稳定可靠:

import falcon
import os

waitTime = int(os.environ.get('WAIT_TIME', '2'))

class SomeFunc(object):
    def on_get(self, req, response):
        # 直接获取所有查询参数
        decoded_params = req.params
        print(decoded_params)
        # 也可以单独获取指定参数,支持设置默认值、类型校验
        limit = req.get_param_as_int('limit', default=10)
        time_val = req.get_param_as_int('time')

api = falcon.API()
api.add_route('/func', SomeFunc())

调用后控制台会输出完整参数:

{'limit': '12', 'time': '1'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:03