无法在 python 中创建 REST 服务
Unable to create REST service in python
我想创建一个 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)
现在当我在浏览器中输入这个 http://localhost:8881/plot_graph 时出现错误
Error: 500 Internal Server Error
Sorry, the requested URL 'http://localhost:8881/plot_graph' caused an error:
Unsupported response type: <type 'int'>
我的 python 控制台说它正在监听,但给出了这个警告
Bottle v0.12.9 server starting up (using CherryPyServer())...
Listening on http://0.0.0.0:8881/
Hit Ctrl-C to quit.
/Users/guru/python_projects/implement_LDA/lda/lib/python2.7/site-packages/bottle.py:2777: ImportWarning: Not importing directory '/Users/guru/python_projects/implement_LDA/lda/cherrypy': missing __init__.py
from cherrypy import wsgiserver
有什么方法可以解决这个问题?
graph_list
需要包含字符串,但是,看起来您的列表包含整数。您可以将这些整数转换为字符串:
return (str(i) for i in graph_list)
但请注意,列表的元素连接在一起,这可能不是您想要的。所以另一种选择是 return 字典,bottle
将其转换为 JSON 编码的响应:
return {'val{}'.format(i): val for i, val in enumerate(graph_list, 1)}
这将创建一个字典,例如 {'val1': 1, 'val2': 2, 'val3': 2, 'val4': 5}
。
对于警告问题,您似乎在与主 python 脚本相同的目录中有一个名为 cherrypy
的目录。 Rename/remove 该目录和 bottle 将从您的站点包目录中导入 CherryPy。或者您可以简单地从对 run()
的调用中删除 server='cherrypy'
以使用默认的 wsgiref 服务器。
我想创建一个 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)
现在当我在浏览器中输入这个 http://localhost:8881/plot_graph 时出现错误
Error: 500 Internal Server Error
Sorry, the requested URL 'http://localhost:8881/plot_graph' caused an error:
Unsupported response type: <type 'int'>
我的 python 控制台说它正在监听,但给出了这个警告
Bottle v0.12.9 server starting up (using CherryPyServer())...
Listening on http://0.0.0.0:8881/
Hit Ctrl-C to quit.
/Users/guru/python_projects/implement_LDA/lda/lib/python2.7/site-packages/bottle.py:2777: ImportWarning: Not importing directory '/Users/guru/python_projects/implement_LDA/lda/cherrypy': missing __init__.py
from cherrypy import wsgiserver
有什么方法可以解决这个问题?
graph_list
需要包含字符串,但是,看起来您的列表包含整数。您可以将这些整数转换为字符串:
return (str(i) for i in graph_list)
但请注意,列表的元素连接在一起,这可能不是您想要的。所以另一种选择是 return 字典,bottle
将其转换为 JSON 编码的响应:
return {'val{}'.format(i): val for i, val in enumerate(graph_list, 1)}
这将创建一个字典,例如 {'val1': 1, 'val2': 2, 'val3': 2, 'val4': 5}
。
对于警告问题,您似乎在与主 python 脚本相同的目录中有一个名为 cherrypy
的目录。 Rename/remove 该目录和 bottle 将从您的站点包目录中导入 CherryPy。或者您可以简单地从对 run()
的调用中删除 server='cherrypy'
以使用默认的 wsgiref 服务器。