Python Flask Restful忽略蓝图';s url_前缀
我想使用Flask蓝图将我的Flask Restful资源组织成单独的url前缀。无论我设置了什么url前缀(在创建蓝图或注册期间),所有内容都会映射到原始路由路径。如何将Restful与蓝图一起正确使用Python Flask Restful忽略蓝图';s url_前缀,python,flask,flask-restful,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>',
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')
app=Flask(\uuuuu name\uuuuuu)
api=api(应用程序)
api.add_资源(Building,“/”,endpoint='Building'))
api.add_资源(Jack,“/”,endpoint='Jack'))
building\u api=蓝图('building\u api',\uuuuu名称\uuuuuuu)
jack\u api=Blueprint('jack\u api',\uuuuu名称\uuuuuuuuuuuuuuuuuuuuuuuuuuuu)
应用程序注册蓝图(建筑api,url前缀='/buildings')
应用程序注册蓝图(jack\u api,url\u前缀='/jacks')
我所能找到的是,现在应该可以在/buildings/
和/jacks/
上找到这些URL,但这两个URL都是404,相反,我可以在/
上访问大楼。在add\u resource
中对路径进行硬编码可以修复它,但会破坏url\u前缀
这一点,您需要的是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')
building\u bp=Blueprint('buildings',\uuuuuu name\uuuuuuuu)
建筑api=api(建筑bp)
构建api。添加资源(构建“/”)
应用程序.注册蓝图(建筑bp,url\前缀='/buildings')
这是处理blueprint的最佳方法:
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)
从烧瓶导入烧瓶,蓝图
从flask_restful导入Api、资源、url_
app=烧瓶(名称)
api\u bp=蓝图('api',\u名称\u)
api=api(api\U bp)
类TodoItem(资源):
def get(自我,id):
返回{'task':'Say'Hello,World!'}
api.add_资源(TodoItem,“/todos/”)
应用程序注册蓝图(api\U bp)
您应该将Blueprint的实例发送到Api