Flask-Restful忽略了蓝图的url_prefix

Chr*_*ris 1 python flask flask-restful

我想使用Flask蓝图将Flask-Restful资源组织到单独的url前缀中。无论我设置了什么url前缀(在创建蓝图或注册期间),所有内容都会映射到原始路由路径。如何正确地将Restful与蓝图一起使用?

app = Flask(__name__)
api = Api(app)

api.add_resource(Building, '/<int:id>', endpoint='building')
api.add_resource(Jack, '/<int:id>', endpoint='jack')

building_api = Blueprint('building_api', __name__)
jack_api = Blueprint('jack_api', __name__)

app.register_blueprint(building_api, url_prefix='/buildings')
app.register_blueprint(jack_api, url_prefix='/jacks')
Run Code Online (Sandbox Code Playgroud)

我可以找到的所有文档都说现在应该在/buildings/<int:id>和提供这些文件/jacks/<int:id>,但是这两个URL 404都可以在上访问/<int:id>。对路径进行硬编码add_resource可解决此问题,但失败了url_prefix

dav*_*ism 5

您需要将蓝图传递Api实例,而不是应用程序。

building_bp = Blueprint('buildings', __name__)
building_api = Api(building_bp)
building_api.add_resource(Building, '/<int:id>')
app.register_blueprint(building_bp, url_prefix='/buildings')
Run Code Online (Sandbox Code Playgroud)