CherryPy 只接收第一个查询字符串参数

CherryPy only receiving 1st query string parameter

我刚刚开始进入 Python 中的 CherryPy 模块领域。使用 RESTful api 设置服务器是多么容易,这真是太棒了,但是我 运行 遇到了问题。我的代码仅确认查询字符串中的第一个参数。

我想像这样发出 GET 请求: curl -X GET 127.0.0.1:8080/api/sum/?a=2&b=3

我的Python代码如下:

import cherrypy

class getSum:
    exposed = True
    def GET(self, **params):
        a = float(params['a'])
        b = float(params['b'])
        return a+b

if __name__ == '__main__':
    cherrypy.tree.mount(getSum(), '/api/sum/', {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}})
    cherrypy.engine.start()
    cherrypy.engine.block()

在摆弄代码一段时间后,我得出以下诊断: 当查询字符串被读入 params 时,当它到达 '&' 时它不会在字典中开始一个新条目,而是停止。

有没有人对如何将多个参数作为单个查询字符串读取有任何建议?

谢恩,肖恩。

我问题中 Python 脚本 post 实际上是我想做的事情的有效实现。问题出在我提出的 curl 请求上。

我的 curl 请求中的“&”字符截断了我的 bash 命令,结果是:curl -X GET 127.0.0.1:8080/api/sum/?a=2

解决方法是将我的 url 括在引号中,如下所示:curl -X GET "127.0.0.1:8080/api/sum/?a=2&b=3"

当执行此命令时,5.0 返回到终端,如预期的那样。

以下 post 包含有关在 curl 请求中使用 & 符号的有用讨论:How to include an '&' character in a bash curl statement