第九节 JMeter基础-高级登录【接口关联-鉴权】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。
背景:电商的功能:登录、加入购物车、提交订单。问题:谁把什么商品加入了购物车?这时需要把上一个接口的响应数据(登录成功后返回响应数据token值),作为下一个接口的请求数据(加入购物车时token值作为请求数据),这操作JMeter称之为【接口关联】。
思路:
1、登录成功后,得到用户标识--token值;
2、加入购物车--用token值来区分是谁操作;
3、运行后查看结果树。
1.认识JMeter
(1)后置处理器【JSON提取器】
JSON提取器是为了提取某个字段的值。这里是为了提取登录成功后,响应数据返回的token值。
(2)配置元件【HTTP信息头管理器】
主要修改请求头中content-type的类型,JMeter默认是表单类型。
2.【HTTP请求默认值】
养成习惯,把多个接口访问同一个服务器地址提取出来,设置http请求默认值。
3. HTTP请求【登录】
(1)设置【HTTP请求】

(2)设置【JSON断言】

4. 【JSON提取器】
在【登录】层级下添加【JSON提取器】。因为token具有时效性,每次登录后token都不一样,所以它并不是固定写死的。这里通过【JSON提取器】获取到token的值,传参给下一个【加入购物车】接口。
(1)新建【JSON提取器】
【右击】【添加】【后置处理器】【JSON提取器】

(2)设置【JSON提取器】
① Names of created variables:必传,接收提取值的变量名,多个变量用;分隔。给个名“login_token”,后面【加入购物车】时传参需要用到。
② JSON Path expression:必传,用来提取某个值,多个表达式用;分隔。表达式:$.data.token或者$..token(这个比较灵活)。
③ Match No.(0 for Random):非必传,取第几个值,多个值用;分隔。0:随机,默认;-1:所有;1:第一个值。这里可以为空或者填0。

5. HTTP请求【加入购物车】
(1)设置【HTTP请求】
① 名称:加入购物车。
② 请求方法:选择POST。
③ 路径:?s=api/cart/save&application=app&application_client_type=weixin&token=${login_token}。这里先是参数s的值修改加入购物车的请求URL,其次再添加token的参数(接口文档写明了“token默认使用GET传递”),所以这里路径需要添加参数token。前面【登录】时已获取到token的值,所以这里直接${login_token}引用获取。
④ 参数:接口文档中参数JSON形式,这里参数选择【消息体数据】(加之参数太多,一个个添加太麻烦),数据如下:
{
"goods_id": "2",
"spec": [
{
"type": "套餐",
"value": "套餐二"
},
{
"type": "颜色",
"value": "银色"
},
{
"type": "容量",
"value": "64G"
}
],
"stock": "5"
}
注意:::“消息体数据”是JSON格式的,这里一定要注意格式没有问题!!!
如果是手动敲入的一般不会存在格式问题(数据少量时)。如果(数据较多)需要复制粘贴的一定要注意格式问题,最好是在文本编译器里过一遍(例如记事本、notepad++等)。
JMeter工具也有格式校验功能,只是如果不熟悉的人很可能忽视。之前操作时有格式问题,JMeter工具在"goods_id":"2" 这一行的最前面显示一块红色。只是第一次用工具不熟悉,不清楚红色表示格式有误,导致执行结果树有报错,一直找不到原因。后来又从头到尾操作一遍,数据手动敲入的,执行结果就没问题了。才知晓是格式问题导致执行失败!!!自己找了将近3个小时的原因,才找到原因。
补充知识:"goods_id":"2",商品id获取的方式一:通过数据库表【商品表】sxo_goods直接查看id字段值。方式二:通过登录商城后点击商品信息,进入商品信息页面,url中最后的参数就是id.html。


(2)设置【JSON断言】

6.【HTTP信息头管理器】
JMeter工具HTTP请求的请求头Content-Type属性的值默认是表单类型,而【加入购物车】接口的参数是【消息体数据】,是JSON格式,所以要在【注册】层级下新增【HTTP信息头管理器】。
(1)新建【HTTP消息头管理器】
【右击】【添加】【配置元件】【HTTP信息头管理器】

(2)设置【HTTP消息头管理器】
① 添加名称:content-type,值:application/json

7.调试取样器
8.查看结果树
(1)【加入购物车】:失败原因:token鉴权原因、参数JSON格式有误。
(3)【调试取样器】:排错:排到参数的用户名跟登录商城的用户名不一致。



第九节 JMeter基础-高级登录【接口关联-鉴权】的更多相关文章
- jmeter测试wordpress使用base64进行鉴权
1.下载插件 对密码进行加密 2.安装插件 3.使用插件 4.使用base64对上面获取到的密码进行二次加密 echo -n "用户:密码" | base64 将以上命令键入lin ...
- 接口的鉴权&响应数据解密
前言: 1.开放的接口为了避免被别人攻击,频繁刷接口,浪费服务器资源,这就涉及到签名(Signature)加密了 2.API 使用签名方法(Signature)对接口进行鉴权(Authenticati ...
- shiro,基于springboot,基于前后端分离,从登录认证到鉴权,从入门到放弃
这个demo是基于springboot项目的. 名词介绍: ShiroShiro 主要分为 安全认证 和 接口授权 两个部分,其中的核心组件为 Subject. SecurityManager. Re ...
- 全栈项目|小书架|微信小程序-登录及token鉴权
小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...
- # RESTful登录(基于token鉴权)的设计实例
使用场景 现在很多基于restful的api接口都有个登录的设计,也就是在发起正式的请求之前先通过一个登录的请求接口,申请一个叫做token的东西.申请成功后,后面其他的支付请求都要带上这个token ...
- Spring Security 接口认证鉴权入门实践指南
目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...
- YAPI接口自动鉴权功能部署详解
安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...
- 接口的鉴权cookie、session和token
1.HTTP是无状态协议 什么是无状态?就是说这一次的请求和上一次的请求是没有任何关系的,无法共享信息.好处就是速度快. 2.cookie.session的加入 HTTP请求是无状态的,所以解决共享信 ...
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...
- 接口鉴权之sign签名校验与JWT验证
需求描述: 项目里的几个Webapi接口需要进行鉴权,同接口可被小程序或网页调用,小程序里没有用户登录的概念,网页里有用户登录的概念,对于调用方来源是小程序的情况下进行放权,其他情况下需要有身份验证. ...
随机推荐
- keycloak~正确让api接口支持跨域
相关参考 https://leejjon.medium.com/how-to-allow-cross-origin-requests-in-a-jax-rs-microservice-d2a6aa2d ...
- nginx学习记录【一】在windows上的安装nginx的教程
1.下载地址 http://nginx.org/en/download.html 2.选择windows版本 如下图: 3.解压并运行 解压到指定目录,如下图 打开cmd,然后cd到那个目录,如下图: ...
- 【工作记录】JDBC连接MySQL,跨时区调查CST转Asia/Shangha
根据业务要求,不同的国家设置jvm参数,来确定当前时区. // -Duser.timezone=Asia/Kolkata 印度加尔各答 GMT+05:30 // -Duser.timezone=Asi ...
- nginx aio模块添加与配置
1. 升级目的 让现有服务平滑过渡到高版本,减少服务漏洞,提高服务性能 让其支持nginx最新特性 nginx threads模块 2. 获取nginx1.7.2版本 wget http://ngin ...
- MySQL学习笔记-多表查询(上)
多表查询(上) 一. 多表关系 在实际应用中,根据需求,设计的表结构之间存在联系,联系一般分为以下三种 一对多(多对一) 多对多 一对一 1. 一对多(多对一) 案例:部门与员工的关系,一个部门对应多 ...
- python——入门
操作系统 操作系统就是一个特殊的软件 作用有两个,第一个:直接操作硬件:第二个:把操作硬件的代码封装成一个又一个的系统调用 python的特点 python是完全面向对象的语言 函数,模块,数字,字符 ...
- C# 配置文件增加自定义节点
话不多说直接开撸! 首先创建一个Config的文件夹然后新增一个后缀名为.config的文件 配置文件的代码如下: <?xml version="1.0" encoding= ...
- LeetCode 699. Falling Squares 掉落的方块 (Java)
题目: On an infinite number line (x-axis), we drop given squares in the order they are given. The i-th ...
- vits-simple-api搭建
根据vits-simple-api中文文档指南自行搭建后端 以下步骤均在windows平台cpu推理搭建为例 选择你的vits模型(注意是vits!不是So-Vits Bert Vits2 Gpt V ...
- 在线RSA公私钥PKCS格式互转工具
在线公私钥PKCS格式转换,支持公钥PKCS1与PKCS8格式之间相互转换,私钥PKCS1与PKCS8格式之间相互转换:PKCS1定义RSA公开密钥算法加密和签名机制,PKCS8描述私有密钥信息格式, ...

