ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python before_request详解

2022-08-28 00:04:15  阅读:225  来源: 互联网

标签:__ get python request 0.1 env before


before_request 顾名思义,就是在request请求之前做的事情。
它会在每一个请求来的时候,都会先去请求before_request注册的函数。
before_request需要注册一个函数,可以不需要参数。
这个示例是在每个请求之前,做一个分类,不同环境来源的请求需要做
不同的事情。

演示代码

from flask import Flask,request
app = Flask(__name__)

@app.route("/test1", methods=['POST'])
def t1():
    data = request.get_json(force=True)
    env = data.get('env')
    print(env)
    return env
	
@app.route("/test2")
def t2():
    env = request.args.get('env')
    print(env)
    return env
	
@app.before_request
def before():
    res_method = request.method
    env = ''
    if res_method == 'GET':
        env = request.args.get('env')
    if res_method == 'POST':
        data = request.get_json(force=True)
        env = data.get('env')
    if env == 't1':
        print('before t1, I need change nginx')
    elif env == 't2':
        print('before t2,I need to update mysql')
    else:
        print('new env: %s, I need check it' % env)
    return None
if __name__ == "__main__":
    app.run()

  

结果演示
C:\Users\jh>curl -H "Content-type: application/json" -d "{\"env\":\"t1\"}" http://127.0.0.1:5000/test1
t1
C:\Users\jh>curl http://127.0.0.1:5000/test2?env=t2
t2
C:\Users\jh>curl http://127.0.0.1:5000/test2?env=t7
t7

后台日志输出
127.0.0.1 - - [26/Aug/2022 19:41:28] "POST /test1 HTTP/1.1" 200 -
before t1, I need change nginx
t1
127.0.0.1 - - [26/Aug/2022 19:41:36] "GET /test2?env=t2 HTTP/1.1" 200 -
before t2,I need to update mysql
t2
127.0.0.1 - - [26/Aug/2022 19:41:40] "GET /test2?env=t7 HTTP/1.1" 200 -
new env: t7, I need check it
t7

before_request通常使用在验证登录,过滤请求攻击等方面

详细文档
https://dormousehole.readthedocs.io/en/latest/api.html#flask.Flask.before_request

标签:__,get,python,request,0.1,env,before
来源: https://www.cnblogs.com/mtck/p/16631810.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有