[英]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.