首页 > 其他分享 >提取响应结果,生成全局变量:extract

提取响应结果,生成全局变量:extract

时间:2024-04-06 19:58:14浏览次数:35  
标签:data access 响应 token key 全局变量 extract

import ast
from jsonpath import jsonpath
from api.tools.handle_attribute import HandleAttr
"""
核心功能:
鉴权
参数依赖提取
设置全局变量(设置类属性)
"""
class HandleExtract:
    """
    思路:
    1、在excel中新增extract_data,用于存储提取数据的key以及提取表达式(jsonpath)
    2、在请求需要鉴权的接口之前,去请求登录接口,读取extract_data中的数据,获取字典的key(响应结果中key),values(json)
    从响应结果中提取到鉴权信息,设置到类属性作为全局变量
    3、如果是鉴权,就在请求需要鉴权的接口之前,将这个鉴权的token设置到请求头里面
    4、如果是参数依赖,其他接口在发送请求之前,去获取到相应的参数,替换自己的请求参数
    """
    # extract_data {"access_token":"$..access_token"}
    # {'response_type': 'json', 'response': {'access_token': '383be57e-3c93-45ee-a0ee-80d3ae10a218', 'token_type': 'bearer', 'refresh_token': '2ff76de6-0f6f-48d3-96be-4f9444a8fac5', 'expires_in': 1295999}
    def handle_extract(self, extract_data, response):
        """
        :param extract_data (str): 字符串类型,取数来源读取excel
        :param response (dict): 字典类型,取数来源接口返回
        :return:
        """
        if extract_data:
            # 三元运算,判断extract_data请求类型  ast.literal_eval将字符串转换为dict
            extract_data = extract_data if isinstance(extract_data, dict) else ast.literal_eval(extract_data)
            # items():获取所有的键值对,每个键值对是元祖形式
            for key, value in extract_data.items():  # access_token $..access_token
                # 通过jsonpath将响应结果中的token提取出来
                token = jsonpath(response, value)[0]
                # 将提取到的access_token属性设置为全局变量
                setattr(HandleAttr, key, token)
                # 读取全局变量的属性值
                print("获取的token:", getattr(HandleAttr, key))
        else:
            print("extract_data:数据为空,无需设置全局变量")
if __name__ == '__main__':
    extract_data = '{"access_token":"$..access_token"}'
    requests = {'response': {'access_token': '383be57e-3c93-45ee-a0ee-80d3ae10a218', 'token_type': 'bearer', 'refresh_token': '2ff76de6-0f6f-48d3-96be-4f9444a8fac5', 'expires_in': 1295999}}
    cl = HandleExtract()
    cl.handle_extract(extract_data, requests)

 

标签:data,access,响应,token,key,全局变量,extract
From: https://www.cnblogs.com/python-test001/p/18117819

相关文章

  • 响应式流的核心机制——背压机制
    一、响应式流是什么?响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者,而不需要发布者阻塞,或订阅者有无限制的缓冲区或丢弃。响应式流模型存在两种基本的实现机制。一种就是传统开发模式下的“拉”模式,即消费者主动......
  • Flask 请求与响应
    request.args ->请求Query参数request.form->请求Body参数request.values->请求所有参数分别代表什么?测试:发一个post请求 结果: 请求相关信息:常用的还有request.cookies,request.headers,request.path保存文件跟Django不一样文件对象=request.file......
  • Python进阶:使用requests库轻松发送HTTP请求并获取响应
    Python进阶:使用requests库轻松发送HTTP请求并获取响应简介:本文将带您深入了解Python中强大的requests库,学会如何使用它发送各种HTTP请求,并轻松获取响应内容。无论您是初学者还是有一定经验的Python开发者,本文都将为您提供实用、详细的指导,助您在网络请求与响应的处理上更上......
  • extract函数
    经过extract函数的 变量的值都是string类型这里的if($XY==$XYCTF)条件一开始我是直接赋值XY=0e00275209979,并没有利用extract函数去变量覆盖掉XYCTF因为我想的是在php中:var_dump("Warmup"==0e00506035745);的结果是true的 但是其实变量XY经过extract函数之后0e0......
  • 【接口】HTTP(1)|请求|响应
    1、概念HyperTextTransferProtocol(超文本传输协议)用于从万维网(就是www)服务器传输超文本到本地浏览器的传送协议。HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。......
  • Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染
    响应式数据什么是响应式数据? 当数据发生改变时,DOM树的内容,会和数据同步更新。 vue3不是自动响应式数据,需要经过函数处理得到响应式数据对象。ref和reactive这两个函数都会返回响应式数据对象,但也有不同。refref通常用于将一个基本类型转为响应式数据对象。基本类型包括:数......
  • HTTP响应头Content-Disposition
    Content-Disposition用于表示已什么方式展示文件,其中attachment是已附件的方式保存到文件夹当中,可以通过filename去指定附件的名称。但是filename仅支持ASSCII标准中的字符集,如果附件名是中文的话需要使用filename*并同时指定文件的编码:filename*=UTF-8''同时,如果设置Content-......
  • 用JavaScript实现响应式设计的魔法
    在数字世界的迷宫中,响应式设计就像是一把万能钥匙,能打开任何大小屏幕的大门。不论是巨大的桌面显示器,还是袖珍的手机屏幕,响应式设计确保你的网站或应用能在任何设备上都提供优质的用户体验。但如何用JavaScript施展这种魔法呢?让我们一探究竟。使用媒体查询监听器在CSS中,我......
  • 响应式设计(媒体查询)
    什么叫做响应式呢?实际上是指一套代码能够在不同的设备下有着不一样的表现。响应式设计依托于CSS3中的媒体查询,通过查询当前设备的一个尺寸信息,然后应用不同的样式。响应式设计在刚推出时非常的火,因为那个时候也没有什么专门针对移动设备设计的页面,而且一套代码就能解决PC、平......
  • Java登陆第三十六天——VUE3响应式入门、setup语法糖
    当浏览器接收到服务端返回的页面后,浏览器会把页面解析成DOM树,DOM树中各个元素会相应的显示在浏览器上。VUE提供的响应式数据可以在页面不刷新的情况下更新数据。响应式数据App.vue<script>//等价于setup语法糖。固定的写法,不会改。exportdefault{setup(){letsum......