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
我刚刚开始进入 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