工具层handle_request

embedded/2025/3/28 16:50:17/

def __init__(self)

分析项内容/描述
​**__init__(self)**类的初始化方法,用于设置实例的默认请求头(self.headers)和响应处理对象(self.handle_response)。
​**self.headers**固定 HTTP 请求头:
{"Content-Type": "application/json; charset=UTF-8", "locale": "zh_cn"}
作用:
1. 声明数据为 JSON 格式,编码为 UTF-8
2. 设置接口语言为简体中文(zh_cn)。
​**self.handle_response**实例化 HandleResponse 对象,用于处理 HTTP 响应(如解析响应数据、校验状态码、提取动态参数等)。

def __hanele_headers(self)

分析项所用模块/函数解决的问题
​**__hanele_headers(self)**hasattr + getattr + format动态处理请求头:
根据 HandleAttr 类是否包含 access_token 属性,决定是否添加 Authorization 鉴权头。
​**hasattr**Python 内置函数安全检查 HandleAttr 类中是否存在 access_token 属性,避免因属性不存在导致程序崩溃。
​**getattr**Python 内置函数获取 HandleAttr 类中的 access_token 属性值,用于生成鉴权 Token。
​**format**字符串方法将 Token 值格式化为 Authorization: bearer {token} 的标准鉴权头格式。

def __upload_image(self,method,url)

代码片段描述
__upload_image(self, method, url)
  • 私有方法:仅供类内部调用,外部不可直接访问(以双下划线 __ 开头)
  1. 封装图片上传逻辑
  2. 动态设置请求头并发送请求
  3. 上传后重置默认请求头。
with open(file=image_dir, mode="rb") as image
  • with:Python 关键字
  • open(file=,mode=) as image:open是python内置函数
​**MultipartEncoder(fields={...})**

 

python">import re  #re模块处理正则表达式
import requests
from requests_toolbelt.multipart import MultipartEncoder #使用 requests_toolbelt 发multipart/form-data请求from tools.handle_attribute import HandleAttr
from tools.handle_reponse import HandleResponse
from tools.handle_path import image_dir
from conf.setting import image_infoclass HandleRequests:def __init__(self):self.headers = {"Content-Type": "application/json; charset=UTF-8", "locale": "zh_cn"}self.handle_response = HandleResponse()#判断接口需要token和不需要tokendef __hanele_headers(self):if hasattr(HandleAttr,"access_token"):token = getattr(HandleAttr,"access_token")self.headers["Authorization"]="bearer{}".format(token)  #字符串格式化else:print("该接口不需要鉴权")# 图片上传请求处理(管理端后台上传图片)def __upload_image(self,method,url):#with语法自动关闭文件流,不需要file.close();file=image_dir文件绝对路径或相对路径;mode="rb"文件操作模式,r只读,b二进制方式;open函数负责打开文件;with open(file=image_dir,mode="rb") as image:from_data = MultipartEncoder(fields={# "file":("图片的名称.jpg","图片的二进制流","image/jpeg")"file": (image_info["file_name"], image, image_info["file_type"])})self.headers["Content-Type"]=from_data.content_type#记得缩进response = requests.request(method=method,url=url,data=from_data,headers=self.headers)self.headers["Content-Type"] ="application/json; charset=UTF-8"return response#请求接口地址替换数据def __replace_url(self,url:str):#在字符串中找到正则表达式所匹配的所有子串,并返回一个列表;url是待匹配的子串;key_list = re.findall("#(\w.+?)#",url)if len(key_list)>0:for key in key_list:url = url.replace(f"#{key}#",str(getattr(HandleAttr,key)))print("替换后的请求地址:",url)return urlelse:print("不需要替换请求地址的数据")return url  #函数返回值放在return关键字后面,return后面什么也不写,或return也不写默认返回none;# 发送请求方法封装def send_requests(self,method,url,data,is_upload):# 鉴权请求头处理,有token和无tokenself.__hanele_headers()# 请求地址参数替换new_url = self.__replace_url(url=url)if str(is_upload) == "1":# 图片上传接口# 写图片上传的代码逻辑response = self.__upload_image(method=method,url=new_url)new_response = self.handle_response.handle_response(response=response)print("图片上传接口返回:",new_response)return new_responseelse:# 普通接口,需要token 和不需要tokenresponse = requests.request(method=method,url=new_url,json=data,headers=self.headers)new_response = self.handle_response.handle_response(response=response)return new_response

http://www.ppmy.cn/embedded/174493.html

相关文章

【GIS】重要技术3DGS

一、3DGS 技术定义与核心原理 3D Gaussian Splatting(3DGS) 是一种基于显式三维高斯点云表示的 实时场景重建与渲染技术。其核心是通过 3D高斯函数 对场景进行建模,每个高斯点包含 位置、协方差矩阵、颜色、不透明度 等属性,能够…

【优选算法】二分算法模板总结及应用

文章目录 模板搜索插入位置x的平方根山峰数组的峰顶索引寻找峰值寻找旋转数组中的最小值 模板 左边界: 左边区间 [left, resLeft - 1] 都是⼩于 x 的; ▪ 右边区间(包括左边界) [resLeft, right] 都是⼤于等于 x 的; •…

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

目录 1.MiniMax海螺AI视频简介 2.使用教程 1.MiniMax海螺AI视频简介 海螺视频,作为 MiniMax 旗下海螺 AI 平台精心打造的 AI 视频生成工具,致力于助力用户产出高品质视频内容。该工具依托 abab-video-1 模型,具备强大的文生视频功能。用户…

Docker Swarm集群搭建

Docker Swarm集群搭建 1.准备环境 搭建Docker Swarm集群最低需要准备三台设备,且均需要提前安装好Docker。我这里准备了四台机器用于搭建集群,分别是: DockerSwarm-Node1 lemonDockerSwarm-Node1:~$ docker --version Docker version 28.…

经典面试题:C/C++中static关键字的三大核心作用与实战应用

一、修饰局部变量:改变生命周期,保留跨调用状态 核心作用: ​延长生命周期:将局部变量从栈区移至静态存储区(数据段或BSS段),生命周期与程序一致​保留状态:变量在函数多次调用间保…

常见CMS漏洞之二:DeDeCMS

DedeCMS是织梦团队开发PHP ⽹站管理系统,它以简单、易⽤、⾼效为特⾊,组建出各种各样各具特⾊的⽹站,如地⽅⻔户、⾏业⻔户、政府及企事业站点等。 姿势⼀:通过⽂件管理器上传WebShell 1.访问⽬标靶场其思路为 dedecms 后台可以…

Pytorch使用手册(专题五十)—自定义运算符

1. PyTorch 自定义运算符 PyTorch 提供了一个庞大的运算符库,这些运算符可以对张量进行操作(例如 torch.add、torch.sum 等)。然而,您可能希望向 PyTorch 引入一个新的自定义操作,并使其能够与诸如 torch.compile、autograd 和 torch.vmap 等子系统协同工作。为此,您必须…

pip install和conda install的区别

这里写目录标题 一、什么是 Python 依赖(Python Dependencies)?1. 依赖的作用2. 如何管理 Python 依赖3. 依赖管理问题4. 依赖锁定总结 二、使用pip安装包venv隔离环境方法 1:使用 venv(推荐)创建虚拟环境激…