无法在python中创建REST服务
我想创建一个REST服务,所以我尝试了,下面是我的代码片段无法在python中创建REST服务,python,rest,bottle,Python,Rest,Bottle,我想创建一个REST服务,所以我尝试了,下面是我的代码片段 from bottle import route, run @route('/plot_graph',method='GET') def plot_graph(): #compute graph_list (python object of type list) #done return graph_list if __name__ == "__main__": run(host='0.0.0.0',
from bottle import route, run
@route('/plot_graph',method='GET')
def plot_graph():
#compute graph_list (python object of type list)
#done
return graph_list
if __name__ == "__main__":
run(host='0.0.0.0', port=8881, server='cherrypy', debug=True)
现在,当我在浏览器中输入这个时,它给出了一个错误
Error: 500 Internal Server Error
Sorry, the requested URL 'http://localhost:8881/plot_graph' caused an error:
Unsupported response type: <type 'int'>
解决此问题的任何方法?
graph\u list
需要包含字符串,但是,您的列表似乎包含整数。可以使用以下命令将这些整数转换为字符串:
return (str(i) for i in graph_list)
但是请注意,列表中的元素连接在一起,这可能不是您想要的。因此,另一个选项是返回一个字典,该字典将转换为JSON编码的响应:
return {'val{}'.format(i): val for i, val in enumerate(graph_list, 1)}
这将创建一个字典,例如{'val1':1,'val2':2,'val3':2,'val4':5}
对于警告问题,您的主python脚本所在的目录中似乎有一个名为
cherrypy
的目录。重命名/删除该目录,瓶子将从您的站点包目录导入CherryPy。或者,您可以简单地从调用run()
中删除server='cherrypy'
,以使用默认的wsgiref服务器。我在virtual envgraph\u列表中做了所有需要包含字符串的事情,为什么??返回数据类型如何影响web服务?我的意思是您的解决方案有效,但为什么我不能返回整数列表?瓶子支持回调/路由的以下返回:因为瓶子希望您的函数返回某些类型,例如字符串的iterable。可能的类型记录在@mhawke中。如何将此字符串列表转换为字典?我面临的问题是,我的列表也包含重复的值
return {'val{}'.format(i): val for i, val in enumerate(graph_list, 1)}