[英]python - Flask-RESTful get 404 error?
我遵循了flask-RESTful
的官方文檔 ,並且試圖實現第一個hello world演示。
首先,我將所有示例代碼放在一個文件中,並且一切正常。
但是,當我將代碼分成三個單獨的文件時(試圖使項目更結構化),我總是遇到404錯誤 。
文件結構
.
├── app.py
├── app
├── __init__.py
├── __api__.py
└── venv
__init__.py
# -*- coding: utf-8 -*-
#initialization
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
api.py
# -*- coding: utf-8 -*-
from app import app, api
from flask_restful import Resource, Api
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
app.py
# -*- coding: utf-8 -*-
from app import app
if __name__ == '__main__':
app.run(debug=True)
在python控制台中:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 250-643-552
127.0.0.1 - - [03/May/2016 22:35:20] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [03/May/2016 22:35:24] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [03/May/2016 22:38:15] "GET / HTTP/1.1" 404 -
怎么了?
編輯
現在我可以通過移動預期的結果api.add_resource(HelloWorld, '/')
到app.py
app.py(已編輯)
# -*- coding: utf-8 -*-
from app import app, api
from app.api import HelloWorld
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
不知道為什么嗎?
您以前的版本不起作用的原因是模塊api.py從未加載,因此以下代碼(用於將URI映射到給定資源)不會被執行:
api.add_resource(HelloWorld, '/')
實際上,在您的編輯/最新版本中,您不必重寫app.py中的該行代碼。 相反,您只需要從api.py導入某些內容即可。
只是一點說明,通常使用裝飾器api.resource來聲明映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.