Flask 中的 特殊装饰器before_request/after_request


 

before_request :在请求收到之前绑定一个函数做一些事情。 
after_request: 每一个请求之后绑定一个函数,如果请求没有异常。 
teardown_request: 每一个请求之后绑定一个函数,即使遇到了异常。

@app.before_request		在请求进入视图函数之前做出响应
@app.after_request		在请求结束视图函数之后 - 响应返回客户端之前

@app.before_request
def be1():
	return None

@app.after_request
def af1(res):
	return res

正常执行顺序: be1 - be2 - be3 - views - af3 - af2 - af1
异常执行顺序:be1 - af3 - af2 - af1

@app.errorhandler(404)	重定义错误提示
def error404(args) args:错误信息

 

使用before_request来做权限和用户检查

因为使用restful方式,因此每次用户访问都会上传带入auth_key,如jwt等,因此可在@app.before_request中做权限的检查。

@app.app.before_request
def before_request(): #可在此处检查jwt等auth_key是否合法, #abort(401) #然后根据endpoint,检查此api是否有权限,需要自行处理 #print(["endpoint",connexion.request.url_rule.endpoint]) #abort(401) #也可做ip检查,以阻挡受限制的ip等

这样,可对权限做集中管理

 

在最路由之前添加before_request,打印请求参数可以起到“拦截器”的作用

# @app.before_request 等同下面的 application.before_request

@application.before_request
def print_request_info():
    print("请求地址:" + str(request.path))
    print("请求方法:" + str(request.method))
    print("---请求headers--start--")
    print(str(request.headers).rstrip())
    print("---请求headers--end----")
    print("GET参数:" + str(request.args))
    print("POST参数:" + str(request.form))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM