【问题标题】:Flask route at / returns 404 when used with Flask-Restplus与 Flask-Restplus 一起使用时,Flask route at / 返回 404
【发布时间】:2019-06-11 23:25:58
【问题描述】:

我有一个 Flask 应用程序,它有一个 Flask-RestPlus API 以及一个“/”路由。但是,当我尝试访问“/”时,我得到一个 404。如果我删除 Flask-RestPlus 扩展,该路由就可以工作。如何让这两个部分协同工作?

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)
api = Api(app, doc="/doc/")  # Removing this makes / work

@app.route("/")
def index():
    return "foobar"

【问题讨论】:

标签: python flask flask-restplus


【解决方案1】:

这是 Flask-RestPlus 中的 open issue。如this comment 中关于该问题的描述,更改routeApi 的顺序可以解决问题。

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)

@app.route("/")
def index():
    return "foobar"

api = Api(app, doc="/doc/")

【讨论】:

    【解决方案2】:

    flask-restplus 根据其文档定义了一种不同的路由分配方式:

    @api.route('/')
    class Home(Resource):
        def get(self):
            return {'hello': 'world'}
    

    请注意,使用了api 变量而不是app。此外,虽然我不是 100% 确定它是必需的,但使用了一个类。

    【讨论】:

    • 但我不希望主页包含 API。我希望主页使用render_template(或者,在这里保持简单和最小化 - “foobar”)
    • 我明白了。我认为你应该在你的问题中提到它。无论如何,您是否测试过以下内容? stackoverflow.com/a/44780748/695377
    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多