簡體   English   中英

燒瓶RESTful得到404錯誤?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM