首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >烧瓶-Restful忽略蓝图的url_prefix

烧瓶-Restful忽略蓝图的url_prefix
EN

Stack Overflow用户
提问于 2015-09-09 19:56:21
回答 3查看 3.5K关注 0票数 2

我想使用烧瓶蓝图将我的烧瓶-Restful资源组织成单独的网址前缀。不管我设置了什么url前缀(在蓝图创建或注册期间),所有内容都被映射到原始路由路径。如何正确使用Restful与蓝图?

代码语言:javascript
运行
复制
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')

我所能找到的所有文档都说现在应该可以在/buildings/<int:id>/jacks/<int:id>上使用这些urls,但是这两个urls 404,而我可以访问在/<int:id>的第一个楼。在add_resource中对路径进行硬编码可以修复它,但它不符合url_prefix的要求。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-09 20:14:17

您需要把蓝图递给我Api实例,而不是应用程序。

代码语言:javascript
运行
复制
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')
票数 8
EN

Stack Overflow用户

发布于 2016-06-27 01:55:17

这是处理蓝图的最佳方式:

代码语言:javascript
运行
复制
from flask import Flask, Blueprint
from flask_restful import Api, Resource, url_for

app = Flask(__name__)
api_bp = Blueprint('api', __name__)
api = Api(api_bp)

class TodoItem(Resource):
    def get(self, id):
        return {'task': 'Say "Hello, World!"'}

api.add_resource(TodoItem, '/todos/<int:id>')
app.register_blueprint(api_bp)

您应该将Blueprint实例发送给Api

票数 2
EN

Stack Overflow用户

发布于 2021-07-01 17:53:03

我不知道为什么,但正如答案中提到的那样,我很难使用Blueprint

但是这里有一个快速解决方案,我在浏览doc链接时找到了它。利用prefix参数在Api()中完成这项工作。

代码语言:javascript
运行
复制
app = Flask(__name__)

api = Api(app, prefix='/buildings')

现在,您的所有路线都将以/buildings为前缀。只需确保在可能只使用url_for('link')的地方使用/link

我注意到的另一件奇怪的事情是,至少对我来说,它没有工作,直到我将我的路线重命名为与它们类名相同的名称。例如,Class Home(Resource)应该有一条通往/home的路由。使用/homeepage或对Home Class的任何其他路由都会导致错误。不知道是不是只有我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32488098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档