无法在python中创建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',

我想创建一个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', 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)}