繁体   English   中英

无法在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)

但请注意,列表中的元素连接在一起,可能不是您想要的。 因此,另一种选择是返回一个字典其中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的目录。 重命名/删除该目录,瓶子将从您的site-packages目录导入CherryPy。 或者你可以简单地从run()调用中删除server='cherrypy'来使用默认的wsgiref服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM