Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask Restful忽略蓝图';s url_前缀_Python_Flask_Flask Restful - Fatal编程技术网

Python Flask Restful忽略蓝图';s url_前缀

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>',

我想使用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')
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