flaks 钩子函数 | 中间件 | 内置对象 | Flask类视图和RESTfu

news/2025/1/13 14:14:55/文章来源:https://www.cnblogs.com/longly1111/p/18519749

什么是钩子(中间件Middleware)
钩子或叫钩子函数,是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个point-挂载点,
是一种AOP切面编程思想,
常用的钩子函数
before_first_request:   处理第一次请求之前执行,
before_request:  在每次请求之前执行,通常使用这个钩子函数预处理一些变量,实现反爬等
after_request:  注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_appcontext:  当APP上下文被移除之后执行的函数,可以进行数据库的提交或者回滚

 


 

g
global全局对象
g对象是专门用来保存用户的数据的
g对象在一次请求中的所有的代码的地方,都是可以使用的
突破变量存储位置限制,为数据传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使用,
可以保存在g对象中,在其他视图函数中就可以使用这个数据,


request:
请求对象,可以获取客户端提交过来的所有请求信息


session:
会话技术,服务端会话技术的接口


current_app:
app的配置信息,app对象获取,
current app
使用获取当前app需要注意,一定要在程序初始化完成之后

 


 

 

Flask类视图 和 RESTfu

安装插件

# pip 安装
pip install flask-restful

  

创建Resource实现类  创建一个文件api 

class HelloRESTful(Resource):def get(self):return {"data":"Hello GET"}def post(self):return {'data':'hello PosT'}

 

 

 

创建一个文件urls 

#方式一: 创建并初始化
api = API(app)
#方式二: 创建,之后初始化
api = API()
api.init_app(app)
#注册路由 api.add resource(HellORESTFul,"/")

 

 

 

 字段格式化 

fields  进行定义
marshal_with  进行使用
特性

  • 显示我们设计的数据结构
  • 默认返回的数据如果在预定义结构中不存在,数据会被自动过滤
  • 如果返回的数据在预定义的结构中存在,数据会正常返回
  • 如果返回的数据比预定义结构中的字段少,预定义的字段会呈现一个默认值

定义字段输出

  • 使用字典进行定义
  • 常用都是基本类型:string,Integer

 

定义好的格式通过装饰器进行使用
@marshal_with(需要返回的数据格式),

return返回字典就ok了

class Users(Resource):@marshal with(user fields)def get(self):return {'msg':'呵呵','data':'没有数据', 'age':'22','private_data':'表中数据"}    

  

案例展示   Nested  嵌套字典 

#格式化字段
usermodel_fileds ={'id':fields.Integer,'name': fields.string,
}
user2_fields ={'msg':fields.string(default='ok'),'status':fields.Integer(default=1),'data':fields.Nested(usermodel_fileds) // 这个字段要遵循上一个字段的定义
}

  

嵌套列表   fields.List (usermodel_fileds) 嵌套列表 

#格式化字段
usermodel_fileds ={'id': fields.Integer,'name': fields.string,
} users3_fields ={'status':fields.string(default=1),'msg': fields.string,'data': fields.List(fields.Nested(usermodel_fileds)
)

 

url

连接字段

  • 就是将当前数据的操作api暴露出来
  • 根据提供的ur1和唯一标识进行数据操作
#格式化字段
usermodel_fileds = {'id':fields.Integer,'name': fields.string,'url':fields.Url('id', absolute=True)
}
# 在add_resource中提供对应的 endpointapi.add resource(Users4, "/user4/', endpoint='id')

  

接受前台提交的参数

 

参数解析  reqparse    apis 文件代码 

parser =reqparse.RequestParser(
parser.add_argument('name',type=str,required=True, help='name是必需的参数')
class User4Resource(Resource):def get(self):#获取参数args =parser.parse args()name = args.get('name')return {'name': name}

  

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825147.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么神经网络loss值很小但实际预测结果差很大

当我们使用神经网络进行训练时,可能会遇到loss值很小但实际预测效果很差的情况。这可能是由:1.过拟合;2.不合适的数据分割;3.评估指标选择不当;4.模型结构或参数设置不当;5.数据问题导致的标签错误等原因造成的。1.过拟合 过拟合是神经网络训练中常见的问题,意味着模型在…

用H5开发APP和用原生代码开发APP有什么区别

使用H5开发APP和使用原生代码开发APP的区别主要体现在:1.开发过程不同;2.性能与效率不同;3.用户体验不同;4.兼容性问题不同;5.维护和更新方式不同。总的来说,H5开发更侧重于跨平台兼容和快速开发,而原生开发则注重应用性能和优异的用户体验。1.开发过程不同 H5开发,即使…

Golang 开源库分享:anko - 给 Go 加点“脚本魔法”

GitHub 仓库链接:https://github.com/mattn/anko 1. anko 是干嘛用的? anko 是一个可以让 Go 项目支持脚本语言的小工具。换句话说,就是我们可以给 Go 项目加点“脚本魔法”,在程序跑起来之后还能动态地改代码逻辑。比如,你在写一个应用,想让用户可以随时调整设置或控制程…

历史性突破:独立开发 .net core 在线客服系统累计处理聊天消息 48 万余条!

业余时间用 .net core 写了一个在线客服系统。今天我查了下在线使用环境的数据库,累计的处理消息条数居然达到了创纪录的 489933 条!! 48 万余条!!业余时间用 .net core 写了一个在线客服系统。我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,…

mybatis - [10] 三剑客generatorpagehelper$mybatis-plus

题记部分 一、mybatis-generator 1.1、概述 mybatis-generator是一个能快速生成xml、dao接口、实体类、注解类的代码生成器。 官网地址:https://mybatis.org/generator/index.html 1.2、配置方式-1 引入Maven插件依赖 <build><plugins><plugin><groupI…

idea2024.1下载和激活

通过百度网盘分享的文件:IDEA 2024.1激活.zip链接:https://pan.baidu.com/s/1RlZk-R4alx50IXgMg7KO2w 提取码:ewq7 安装包和激活工具都在链接里面 1、安装好idea后 2、打开IDEA 2024.1激活\scripts\install-current-user.vbs 会提示安装补丁需要等待数秒。点击【确定】按钮…

windows查看文件/夹被哪个进程占用以及解除方法

方法一:使用任务管理器 打开任务管理器:右键点击任务栏,选择“任务管理器”。访问资源监视器:在任务管理器中,切换到“性能”选项卡。点击左下方的“打开资源监视器”。查找占用文件的进程:在“资源监视器”窗口中,切换到“CPU”选项卡。展开“关联的句柄”栏。在搜索框…

SpringBoot项目集成MinIO

一、MinIO的下载安装以及基本使用 1.下载地址:https://dl.min.io/server/minio/release/windows-amd64/minio.exe 2.下载好后需要手动创建data文件夹用于存储MinIO中的数据 3.键入cmd 4. 设置MinIO的一些变量(第一次启动需要配置)set MINIO_ROOT_USER=adminset MINIO_ROOT_…

Oracle与GreatSQL差异:更改唯一索引列

Oracle与GreatSQL差异:更改唯一索引列 1.问题来源 在从Oracle迁移到GreatSQL的应用系统中,一条普通的update语句在GreatSQL中却报错,需要进行SQL语句的改写。把实际问题简化为下面简单情况进行说明。 在Oracle下,可以正常执行的update语句。 -- 建表 CREATE TABLE test.tes…

PVE7.1虚拟机安装黑群晖教程

本教程基于Proxmox VE(PVE)7.1虚拟机环境下安装群晖,兼容这块简单说明:Intel酷睿四代以下或者志强处理器建议安装Ds3615-3617-3266等版本,四代以上可以安装918-920等版本,如果你啥都不知道,安装Ds3615就对了。安装步骤1.先删除删除local-lvm分区,    具体教程PVE虚拟…

项目经理如何进行项目绩效评估

项目经理进行项目绩效评估是通过设定标准、跟踪进度、分析结果和整改措施等步骤完成的。在这个过程中,项目经理需要对各个关键绩效指标(KPIs)进行监控和评价,这样可以确保项目符合既定目标和标准。设定标准是项目绩效评估的基础,它为项目的成功定义了清晰的轨迹。 设定标准…