当路由共享相同的参数时,是否可以对路由进行一些共享的预处理?
我有以下两条路线:
@app.route("/<string:filetype>/<int:number>/something", methods=['GET'])
def handle_get_file(filetype, number):
if filetype == "bad":
return status.HTTP_400_BAD_REQUEST
...some logic that has to do with "something"
@app.route("/<string:filetype>/someotherthing", methods=['GET'])
def handle_some_other_file(filetype):
if filetype == "bad":
return status.HTTP_400_BAD_REQUEST
...some logic that has to do with "some other thing"
共享与检查文件类型相同的代码。
我不想使用手动的文件类型检查方法,而是使用某种自动模式,该模式将首先运行路径的公共部分,然后再继续传递更大的路径“某些”或“其他”。 / p>
例如
# this will match first
@app.route("/<string:filetype>/<path:somepath>")
def preprocessing(filetype):
if filetype == "bad":
return status.HTTP_400_BAD_REQUEST
else:
# process the rest of the route further
是否可以为包含参数但也与其他元素分开的路径实现解决方案?
例如:要使上述预处理在<int:someothernumber>/<string:filetype>/<path:somepath>"
上触发。
答案 0 :(得分:0)
您在此域中有很多选择。
URL preprocessors运行得很早,
Flask通过以下示例指导您实现它们:
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
g.lang_code = values.pop('lang_code', None)
来源:http://flask.pocoo.org/docs/1.0/patterns/urlprocessors/
要使用它来解决您的问题,我想我应该从以下内容开始:
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
filetype = values.pop('filetype', None)
if filetype == "bad":
app.abort(404)