访问资源烧瓶时的404

ovg*_*ovg 3 python flask http-status-code-404 flask-restful

from flask import g, request, session, render_template, flash, redirect, url_for
from flask import current_app as app

@app.route('/')
def home():
    return 'this works'


from flask_restful import Resource, Api
from app.extensions import api


class HelloWorld(Resource):
    def get(self):
        return {'Hello': 'World'}

api.add_resource(HelloWorld, '/test')  # Getting a 404 for this route on http://127.0.0.1:5000/test
Run Code Online (Sandbox Code Playgroud)

扩展程序设置api变量:

api = Api()
api.init_app(app)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么在尝试访问api资源时会收到404错误?

ovg*_*ovg 6

好的,问题似乎在于以下顺序是错误的。在初始化api之前,我必须添加资源。

api = Api()
api.init_app(app)
api.add_resource(HelloWorld, '/')
Run Code Online (Sandbox Code Playgroud)

固定:

api = Api()
api.add_resource(HelloWorld, '/')
api.init_app(app)
Run Code Online (Sandbox Code Playgroud)

鉴于例如SQLAlchemy需要在使用init_app之前调用init_app,这是很奇怪的。

  • 在我的代码中,它们并不彼此相邻,因为我正在使用应用程序工厂 (2认同)
  • 还使用了一个应用程序工厂,并准备惩罚我的笔记本电脑,直到我找到这个答案。谢谢!! (2认同)