簡體   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