我是Flask的新手,我试图完成以下任务:
对于特定路由的所有子路由,我想提取一个参数并验证是否已通过GET参数或标题密钥提供了api密钥。
理想的情况是,如果我可以嵌套蓝图。然后我会做以下事情:
有一个主蓝图来提取参数并验证api密钥:
@secured_api.url_value_preprocessor
def pull_tenant(endpoint, values):
g.tenant_code = values.pop('tenant')
@secured_api.before_request
def validate_api_key():
api_key = request.headers.get('X-Api-Key')
...
if (api_key is None):
raise InvalidApiKey()
然后,用我的资源(v1_bp)获得另一个蓝图,我可以这样做:
secured_api.register_blueprint(v1_bp, url_prefix="/v1")
app.register_blueprint(secured_api, url_prefix='/secured/<tenant>')
这样所有的v1_bp路由都在/安全// v1
之下实现这一目标的最佳方式是什么?
提前致谢!