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.methodenv = ''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

python before_request详解相关推荐

  1. python区块链开发_Fabric区块链Python开发详解

    Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...

  2. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  3. 【python】详解类class的继承、__init__初始化、super方法

    原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...

  4. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  5. python 最小二乘法_最小二乘法及其python实现详解

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...

  6. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  7. 【python】什么是序列,Python序列详解

    什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...

  8. python多线程详解 Python 垃圾回收机制

    文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...

  9. Python线程详解

    Python线程详解 线程简介 开启多线程 线程之间共享 GIL全局解释器锁 线程间通信 线程简介 线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元. ...

最新文章

  1. 卷积网络基础知识---Depthwise Convolution Pointwise Convolution Separable Convolution
  2. Python爬虫实战(3):计算大学本学期绩点
  3. 阿里员工都是这样排查Java问题的,附工具单
  4. Spring依赖注入(DI)
  5. MySQL的简单使用
  6. select与pselect的信号屏蔽
  7. 跟我一起学Oracle 11g【1】----基础回顾
  8. jni数组使用(二)
  9. 用SQL语句可以取出中文汉字的首字母
  10. coldplay 全集下载
  11. 基于Web在线考试系统的设计与实现
  12. 脸上为什么会长黄褐斑?
  13. android开发界面转换,ios界面最省时最简单的办法转换成Android界面 – 学ui网
  14. jQuery 的 slideUp 动画,当鼠标快速连续触发, 动画会滞后反复执行,该如何处理呢
  15. Code 39码与Code 128码区别
  16. live writer实用插件合集
  17. 安卓手机USB调试模式打开方法
  18. 信源编码技术实验一:利用Audacity进行音频谱分析
  19. 20191203—— 机器学习复习 sklearn转换器与预估器
  20. 新人初学python在运行脚本时报错了,不知道如何处理还请各位高人指点,拜托拜托

热门文章

  1. 由QQ文件中转站超快速上传联想到
  2. 人工智能当“古玩鉴定”,人类鉴定师会被取代吗?
  3. 开发了一款年龄计算器,现无偿开源给大家
  4. linux ntpdate交叉编译,arm交叉编译ntpdate与服务器进行时间同步
  5. 国内低代码开发平台介绍
  6. 多肽定制服务 | Peptides - MedChemExpress
  7. 主观体验、情绪价值、第一印象、要不要画饼为什么?
  8. docker学习笔记(初阶)
  9. Flink大数据实时计算系列-kafka的sink使用方法
  10. android textview 关闭自动换行,Android TextView停止换行