Postman基本使用、测试环境(Environment)配置

news2024/11/17 17:36:22

文章目录

  • 准备测试项目Demo
    • Controller测试代码
    • Interceptor模拟拦截配置
  • Postman模块简单介绍
  • Postman通用环境配置
    • 新建环境(Environment)
    • 配置环境(Environment)
      • 设置域名变量
      • 引用域名变量
      • 查看请求结果打印
  • Postman脚本设置变量
    • 登录成功后设置全局`Auth-Token`脚本
    • 编写脚本
    • 查看consol打印结果
    • 查看环境变量设置结果
  • 请求需要授权的Api测试
    • 引用授权标识`Auth-Token`
    • 模拟`Auth-Token`失效,重新请求
  • 总结
  • 参考文章

准备测试项目Demo

Controller测试代码

package com.dz.controller;

import com.jfinal.core.Controller;
import com.jfinal.core.Path;

import java.util.HashMap;
import java.util.Map;

@Path("/")
public class HelloWorldController extends Controller {

    /**
     * postman 环境配置请求测试
     */
    public void test_login() {

        Map<String, Object> resMap = new HashMap<>();
        resMap.put("code", 1);
        // 响应一个登录成功的Auth-Token
        Map<String, Object> tokenMap = new HashMap<>();
        tokenMap.put("Auth-Token", "1234567890.hello.token");
        resMap.put("data", tokenMap);
        resMap.put("message", "success");

        renderJson(resMap);
    }


    /**
     * postman 环境配置请求测试
     */
    public void test_api() {

        Map<String, Object> resMap = new HashMap<>();
        resMap.put("code", 1);
        resMap.put("data", "响应一个正确数据");
        resMap.put("message", "success");

        renderJson(resMap);
    }
}

Interceptor模拟拦截配置

package com.dz;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;

import java.util.HashMap;
import java.util.Map;

/**
 * demo
 * <pre>
 *     配置一个简单的请求拦截
 * </pre>
 */
public class ReqInterceptor implements Interceptor {

    @Override
    public void intercept(Invocation inv) {

        String actionKey = inv.getActionKey();

        if (actionKey.contains("/test_login")) {
            // 直接放过登录请求:不校验Auth-Token
            inv.invoke();
        } else {

            Controller controller = inv.getController();
            String authToken = controller.getHeader("Auth-Token");

            // 拦截授权标识
            if (authToken == null || authToken.isEmpty()) {
                Map<String, Object> resMap = new HashMap<>();
                resMap.put("code", 10000);
                resMap.put("data", "Not Fount Auth-Token.");
                resMap.put("message", "error");

                controller.renderJson(resMap);
            } else {
                // 假设这是一个正确的Auth-Token
                if ("1234567890.hello.token".equals(authToken)) {
                    // 通过
                    inv.invoke();
                } else {
                    Map<String, Object> resMap = new HashMap<>();
                    resMap.put("code", 10001);
                    resMap.put("data", "Auth-Token is not error.");
                    resMap.put("message", "error");

                    controller.renderJson(resMap);
                }
            }
        }
    }
}

Postman模块简单介绍

        一般在使用的时候,会把整个完整的请求url写到地址栏,包括协议、域名、端口号、项目地址。
        在单一环境进行请求的时候,这样写不会出现大范围重新编辑的情况,通常复制链接就能把协议、域名、端口等全部复制到新url。只需要重新修改项目地址即可!

        也可能会出现问题:

        一旦出现直接同时测试线上(某个域名下的Api)或者测试本地(localhost)下的Api,就可能出现反复修改域名的情况,这样就是让原本简单的请求变的复杂,修改的请求少了还好,改的多了之后会很让人头大。

        如果你说这个也不复杂呀?那么如果请求多个IP下的相同Api呢,比如:

        http://192.169.1.10:9090/test_api
        http://192.169.1.11:9090/test_api
        http://192.169.1.12:9090/test_api
        http://192.169.1.13:9090/test_api
        http://192.169.1.14:9090/test_api
        ...

        这样也不复杂吗?除了IP不同,其他的都是一样的,这时候Postman请求环境的配置就至关重要了。

image.png

注!Postman版本不同,界面样式也可能不一样,但是配置基本一致。

Postman通用环境配置

新建环境(Environment)

image.png

配置环境(Environment)

设置域名变量

image.png

引用域名变量

image.png
点击【Send】发送请求,获取响应数据:
image.png

查看请求结果打印

image.png

Postman脚本设置变量

        上面使用/test_login演示了请求环境配置域名,程序也正确响应了Auth-Token的值。
        但是,如果需要Auth-Token授权的Api请求怎么办呢?要手动把Auth-Token值都复制一遍吗?
        如果你说是的,反正都要创建一个新请求,复制一遍也不麻烦!那如果这个Auth-Token过期了呢?还需要重新把之前测试的接口都替换一遍吗?

        这个时候就有一个非常好用的方法:
        使用脚本去设置一个全局的/当前环境的Auth-Token每次登录都重新设置Auth-Token,这样只需要引用Token的变量就可以了,不需要每次替换。只要重新登录就好

登录成功后设置全局Auth-Token脚本

image.png

编写脚本

脚本使用Javascript编写:
image.png
脚本内容:

// 打印两个结果
console.log('响应response:', pm.response)
console.log('响应体responseBody:', responseBody)

// 处理一下逻辑判断
let response = pm.response
// 请求成功的判断
if (response.status === 'OK' && response.code === 200) {
    let data = JSON.parse(responseBody)
    if (data && data.code === 1) {
        pm.environment.set('Auth-Token', data.data['Auth-Token'])
        console.log('Auth-Token设置成功!')
    } else {
        console.log('登录验证失败!')
    }
} else {
    console.log('请求返回错误!')
}

查看consol打印结果

        正常请求了登录接口,同时按照编写的逻辑,处理了环境变量的设置

image.png

查看环境变量设置结果

image.png

请求需要授权的Api测试

引用授权标识Auth-Token

        什么内容都没有变化,仅仅只是修改了接口名字/test_api,引用了Auth-Token:请求成功了,返回状态码200。

image.png

模拟Auth-Token失效,重新请求

        手动在环境配置中修改Auth-Token的值,模拟Token失效:

image.png
        重新请求/test_api:按照代码内编写的Token拦截机制,发现Token不正确,做出了响应。

image.png
        这时候什么都不需要修改,重新登录/test_login:Auth-Token就重新设置了

image.png
        重新对/test_api发起请求就得到正确的返回结果了:同样是这个请求接口什么都没变,只是重新登录了而已。

image.png

总结

  1. 环境配置中设置的变量,只需要在请求的时候,使用双大括号{{var}}引用即可(哪里使用,哪里引用)。
  2. 同样的Api,不同的配置,只需要切换请求环境就能实现请求的无缝切换,无需重新编辑参数。

参考文章

Postman接口测试—设置postman测试环境(Environment),配置token全局变量,接口测试报错处理_postman的environment-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL SERVER无法连接到服务器解决过程记录

很久没用sql server了&#xff0c;这几天打算更新SQL SERVER数据库&#xff1a;SQL看这一篇就看够了&#xff08;附详细代码及截图&#xff09; 这篇文章&#xff0c;发现连接不上服务器。 找一下解决办法。 一、打开服务界面 在键盘上按“WINR”快捷键&#xff0c;打开运行…

记一次go应用在k8s pod已用内存告警不准确分析

一、背景 起因&#xff1a; 自监控应用凌晨告警&#xff1a;Pod 内存使用率大于80%&#xff08;规格为1c1G&#xff09;。内存缓慢增长&#xff0c;持续到早上内存使用率停止在81%左右。 疑点&#xff1a; 此模块是一个轻任务模块&#xff08;基于go开发&#xff09;&#xff0…

ConcurrentHashMap 原理

ConcurrentHashMap ConcurrentHashMap的整体架构ConcurrentHashMap的基本功能ConcurrentHashMap在性能方面的优化 concurrentHashMap&#xff1a; ConcurrentHashMap的整体架构 concurrentHashMap是由数组链表红黑树组成 当我们初始化一个ConcurrentHashMap实例时&#xff0c…

Gin 框架之用户密码加密

文章目录 一、引入二、密码加密位置三、如何加密四、bcrypt 库加密4.1 介绍4.2 优点&#xff1a;4.3 使用 五、小黄书密码加密实践 一、引入 Gin是一个用Go语言编写的Web框架&#xff0c;而用户密码的加密通常是在应用程序中处理用户身份验证时的一个重要问题。 通常敏感信息…

刘阳,定格历史,守护中华文化!

2021年2月24日&#xff0c;#圆明园365张珍贵老照片#的话题凭3.7亿阅读量冲上热搜。这批时代跨越80年的老照片仿佛重启记忆的按钮&#xff0c;让人梦回“夏宫”&#xff1b;少有人知道&#xff0c;它们的拥有者&#xff0c;却是一位不折不扣的80后。 刘阳&#xff0c;土生土长北…

Python初学者须知(9)Return有什么用——初识Return语句

本系列博客主要针对的是Python初学者。Python语言简洁、强大的特性吸引了越来越多的技术人员将他们的项目转移到Python上。目前&#xff0c;Python已经成为计算机行业最流行的编程语言之一。笔者考虑到Python初学者的多元化&#xff08;Python学习者可能是对编程感兴趣的中学生…

mysql数据迁移报错Specified key was too long; max key length is 767 bytes

目录 场景&#xff1a; 说明&#xff1a; 疑问&#xff1a; 解决&#xff1a; 验证&#xff1a; 场景&#xff1a; 线上项目支持的过程中遇到mysql库表结构和数据由A库迁移到B库上提示Specified key was too long; max key length is 767 bytes报错&#xff0c;第一次遇到特此…

【保姆级教程|YOLOv8改进】【3】使用FasterBlock替换C2f中的Bottleneck

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

20. 从零用Rust编写正反向代理,四层反向代理stream(tcp与udp)实现

wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器&#xff0c;四层TCP/UDP转发&#xff0c;内网穿透&#xff0c;后续将实现websocket代理等&#xff0c;会将实现过程分享出来&#xff0c;感兴趣的可以一起造个轮子 项目地址 gite: https:…

Acrel-1000DP分布式光伏系统在某重工企业18MW分布式光伏中应用

摘 要&#xff1a;分布式光伏发电特指在用户场地附近建设&#xff0c;运行方式以用户侧自发自用、余电上网&#xff0c;且在配电系统平衡调节为特征的光伏发电设施&#xff0c;是一种新型的、具有广阔发展前景的发电和能源综合利用方式&#xff0c;它倡导就近发电&#xff0c;就…

回溯算法篇-01:全排列

力扣46&#xff1a;全排列 排列和组合的区别在于&#xff0c;排列对“顺序”有要求。比如 [1,2] 和 [2,1] 是两个不同的结果。 这就导致了同一个元素 在同一条路径中不可重复使用&#xff0c;在不同的路径中可以重复使用。 比如数组 [1,2,3] &#xff0c;在第一条路径 [1,2,…

【jQuery入门】基础使用-入口函数、顶级对象$

文章目录 前言一、基础使用1.1 jQuery的下载1.2 简单的使用 二、顶级对象$总结 前言 jQuery是一款广泛应用于前端开发的JavaScript库&#xff0c;它简化了许多常见任务的操作&#xff0c;使得代码编写更加便捷。本文将介绍jQuery的基础使用&#xff0c;包括入口函数和顶级对象…

IPFoxy运营干货|谷歌广告Google Ads建立广告需要注意什么?

编辑投放谷歌广告需要多少个步骤和什么准备工作&#xff0c;本文将来讲述&#xff0c;主要分5个内容&#xff1a;一、投放前竞对研究&#xff1b;二、投放前广告账户设置&#xff1b;三、建立广告系列&#xff1b;四、建立广告组&#xff1b;五、广告长期策略。接下来我们来开始…

防火墙技术

防火墙&#xff08;英语&#xff1a;Firewall&#xff09;技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资料与信息安全性的一种技术。 防火墙技术的功能主要在于及…

【安装VMware Tools】实现Vmware虚拟机和主机之间复制、粘贴内容、拖拽文件

https://www.bilibili.com/video/BV1rN411277B/?spm_id_from333.788.recommend_more_video.6&vd_sourcefb8dcae0aee3f1aab700c21099045395 https://blog.csdn.net/wxqian25/article/details/19406673 待解决方案&#xff1a; 重新下载ubuntu&#xff0c;然后按照 https://…

C#:接口中如何将某个值类型的字段传null?

在实际对接第三方接口时&#xff0c;偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢&#xff1f; 有两种方法&#xff1a; 1、将值类型改为可空类型&#xff1b; 2、定义基类&#xff0c;基类包含所有必须要传的字段&#xff0c;子类则加入偶尔需要传的字段。 下…

制造业企业数字化转型难点剖析及解决之法

导语 全球正在由工业经济向数字经济转型过渡&#xff0c;制造业正在且并将长期处于数字化转型发展阶段&#xff0c;并沿着数字化、网络化、智能化阶段不断跃升。但如何找准数字化转型的切入点&#xff0c;以低耗能、低成本、高效率的方式加快制造业转型升级的步伐&#xff0c;仍…

米粒图像预处理-图像背景均匀化

案例背景 食品检测在国家粮食安全中拥有举足轻重的地位。随着经济全球化程度的深入&#xff0c;中国巨大的市场消费力将吸引越来越多的国际米类品牌的进入&#xff0c;国内粮食市场的竞争将会日趋激烈&#xff0c;人们越来越注重粮食的安全和品质问题&#xff0c;粮食质量检测…