首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在python中创建REST服务

无法在python中创建REST服务
EN

Stack Overflow用户
提问于 2016-08-07 19:04:33
回答 1查看 82关注 0票数 2

我想创建一个REST服务,所以我尝试了一下,下面是我的代码片段

代码语言:javascript
代码运行次数: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)

现在,当我在浏览器http://localhost:8881/plot_graph中输入以下内容时,出现错误

代码语言:javascript
代码运行次数:0
运行
复制
Error: 500 Internal Server Error

Sorry, the requested URL 'http://localhost:8881/plot_graph' caused an error:

Unsupported response type: <type 'int'>

我的python控制台说它正在监听,但给出了以下警告

代码语言:javascript
代码运行次数:0
运行
复制
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

有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-07 19:32:20

graph_list需要包含字符串,但是,看起来您的列表包含整数。您可以使用以下命令将这些整数转换为字符串:

代码语言:javascript
代码运行次数:0
运行
复制
return (str(i) for i in graph_list)

但请注意,列表的元素连接在一起,这可能不是您想要的。因此,另一个选择是返回一个字典,bottle会将其转换为JSON编码的响应:

代码语言:javascript
代码运行次数:0
运行
复制
return {'val{}'.format(i): val for i, val in enumerate(graph_list, 1)}

这将创建一个字典,如{'val1': 1, 'val2': 2, 'val3': 2, 'val4': 5}

对于警告问题,看起来您在与主cherrypy脚本相同的目录中有一个名为python的目录。重命名/删除该目录,bottle将从您的站点包目录导入CherryPy。或者,您可以简单地从对run()的调用中删除server='cherrypy',以使用默认的wsgiref服务器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38813465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档