requests处理token鉴权接口和jsonpath使用方式

2025-11-24 18:50

本文主要是介绍requests处理token鉴权接口和jsonpath使用方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达...

requests处理token鉴权接口和jsonpath使用

第一步:登陆,提取token保存起来

# 登陆接口的地址
url = 'http://www.adf.com/futureloan/member/login'
# 登陆接口的参数
params = {
    "mobile_phone": "123456789",
    "pwd": "123456",
}
# 请求头
headers = {"X-Media-Type": "DuSSS.v1"}
# 发送请求进行登陆
response = requests.post(url=url, headers=headers, json=params)
res = response.json()
token = res['data']['token_info']['token']

第二步:访问需要鉴权的接口时,带上token就可以了

# 提取登陆用户的id
member_id = res['data']['id']
params2 = {
    "member_id": member_id,
    "amount": "2000",
}
# 充值接口的地址
url2 = 'http://www.adf.com/futureloan/member/recharge'
# 请求头
headers2 = {"X-Media-Type": "DuSSS.v2",
           "Authorization": "Bearer " + token}
response2 = requests.post(url=url2, headers=headers2, http://www.chinasem.cnjson=params2)
response.json()

json数据提取工具

pip install jsonpath

例子:通过jsonpath提取token值

data = {
    "content": {
        "data": {
            "titleMsg": "登录名或登录密码不正确",
            "resultCode": 100
        },
        "status": 0,
        "success": 'true'
    },
    "hasError": 'false'
}
resultCode = jsonpath(data, "$..resultCode")
print(resultCode)

requests处理token鉴权接口和jsonpath使用方式

注:返回的是列表,可以通过resultCode[0]提取

jsonpath需要两个参数:

  • 参数1:数据
  • 参数2:jsonpath表达式

注:

  • ①匹配不到返回false
  • ②匹配到数据返回的是包含数据的列表

jsonpath表达式语法:

  • $---------------------根节点
  • 。--------------------选择子节点(直接子节点)
  • 。。-----------------选择子孙节点(不考虑层级)
  • []---------------------选择子节点/选择索引
  • [,]--------------------选择多个字段
  • @-------------------当前选中的节点(和条件过滤使用)
  • [?(过滤条件)]----通过条件过滤数据
{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
               php "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

JsonPath (点击链接测试)结果
$.store.book[*].author获取json中store下book下的所有author值
$…author获取所有json中所有author的值
$.store.*所有的东西,书籍和自行车
$.store…price获取json中store下所有price的值
$…book[2]获取json中book数组的第3个值
$…book[-2]倒数的第二本书
$…book[0,1]前两本书
$…book[:2]从索引0(包括)到索引2(排除)的所有图书
$…book[1:2]从索引1(包括)到索引2(排除)的所有图书
$…book[-2:]获取json中book数组的最后两个值
$…book[2:]获取json中book数组的第3个到最后一个的区间值
$…book[?(@.isbn)]获取json中book数组中包含isbn的所有值
$.store.book[?(@.price < 10)]获取json中book数组中price<10的所有值
$…book[?(@.price <= $[‘expjavascriptensive’])]获取json中book数组中price<=expensive的所有值
$…book[?(@.price <= $[‘expensive’])]获取json中book数组中price<=expensive的所有值
$…book[?(@.author =~ /.*REES/i)]获取json中book数组中的作者以REES结尾的所有值(REES不区分大小写)
$…*逐层列出json中的所有值,层级由外到内
$…book.length()获取json中book数组的长度

通过索引选择数组(列表中的数据)

  • 同一层级有相同数据
jsonpath(data,'.data[1]′)jsonpath(data,′.data[1]') jsonpath(data,'.data[1]′)jsonpath(data,′.data[1].name')
  • 选择多个字段
jsonpath(data,'$.data[0][uid,name]')
  • 通过条件过滤:
jsonpath(data,'.data[?(@.uid==4)]′)jsonpath(data,′.data[?(@.uid==4)]') jsonpath(data,'.data[?(@.uid==4)]′)jsonpath(data,′.data[?(@.naphpme==‘后台')]')

定位到data之后uid的数据

  • 若:
jsonpath(data,'$…name')

获取所有name,需使用上面过滤

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(wwwandroid.chinasem.cn)。

这篇关于requests处理token鉴权接口和jsonpath使用方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156268

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求