当前位置: 首页 > news >正文

Postman 高级用法学习

Postman 高级用法

Postman 是一款强大的 API 调试和开发工具,广泛应用于 API 开发、测试、调试和自动化流程中。除了基本的 API 请求发送和响应查看功能,Postman 还提供了许多高级功能。以下是详细的讲解,包括具体示例和操作步骤。


一、环境管理与变量使用

在 API 开发和测试过程中,切换不同的环境(如开发、测试、生产环境)和使用变量可以大大简化操作。Postman 的环境管理和变量功能非常有用。

1.1 环境管理

操作步骤

  1. 创建环境

    • 点击 Postman 界面右上角的环境选择器(通常显示为“No Environment”)。
    • 点击“Manage Environments”进入环境管理页面。
    • 点击“Add”按钮创建一个新环境。
    • 给环境命名,比如“开发环境”,并添加所需的环境变量。
  2. 定义环境变量

    • 在环境设置中,为每个环境变量设置键值对。例如,设置 base_urlhttps://dev.example.com/api
  3. 切换环境

    • 在环境选择器中选择所需的环境,所有使用 {{variable_name}} 语法的变量都会自动替换为当前环境的值。

示例

假设你有一个 API 基础 URL 在不同环境下不同:

  • 开发环境:https://dev.example.com/api
  • 测试环境:https://test.example.com/api

你可以在请求中使用变量:

GET {{base_url}}/users

切换环境时,{{base_url}} 会替换为相应的 URL。

1.2 变量使用

Postman 支持多种类型的变量,包括环境变量、全局变量和局部变量。

  • 环境变量:适用于当前选定的环境。
  • 全局变量:适用于所有环境和请求。
  • 局部变量:只在当前请求或脚本中有效。

操作步骤

  1. 定义全局变量

    • 点击右上角的“Environment Quick Look”(眼睛图标)。
    • 点击“Add”按钮添加全局变量。
  2. 使用变量

    • 在请求的 URL、Headers 或 Body 中使用 {{variable_name}} 来引用变量。

示例

GET {{base_url}}/users/{{user_id}}

在请求的“Pre-request Script”中,可以动态设置 user_id 变量:

pm.environment.set("user_id", 12345);

二、请求链与集合测试

Postman 支持将多个请求组织成集合(Collection),并允许在请求之间传递数据,实现复杂的 API 测试场景。

2.1 请求链

请求链可以让你在一个请求完成后,将其响应数据传递给下一个请求。

操作步骤

  1. 保存响应数据

    • 在请求的“Tests”选项卡中使用 pm.environment.setpm.globals.set 来保存响应数据。
    // 保存响应中的 user_id 到环境变量
    pm.environment.set("user_id", pm.response.json().id);
    
  2. 在后续请求中使用保存的变量

    • 在下一个请求中,通过 {{user_id}} 使用之前保存的变量。
    GET {{base_url}}/users/{{user_id}}/details
    
2.2 集合测试

Postman 集合(Collection)是一个包含多个请求的集合,可以批量运行这些请求,适用于自动化测试和回归测试。

操作步骤

  1. 创建集合

    • 在左侧的“Collections”面板中,点击“New Collection”创建一个新集合。
  2. 添加请求到集合

    • 将请求拖拽到集合中,或者在创建请求时直接添加到集合。
  3. 运行集合

    • 点击集合的“Run”按钮,进入“Collection Runner”界面。
    • 选择要运行的请求和环境,点击“Run Collection”启动测试。

示例

假设你有一个用户注册和登录的 API,需要依次测试用户注册、获取用户详情和用户登录。

1. POST {{base_url}}/registerBody: { "username": "testuser", "password": "testpass" }2. GET {{base_url}}/users/{{user_id}}使用注册成功后返回的 user_id3. POST {{base_url}}/loginBody: { "username": "testuser", "password": "testpass" }

可以通过集合和变量传递来实现这个测试流程。


三、使用脚本增强测试能力

Postman 提供了强大的脚本功能,可以在请求发送前(Pre-request Script)和收到响应后(Tests)执行 JavaScript 脚本,用于数据预处理和响应验证。

3.1 Pre-request Script

Pre-request Script 是在请求发送前执行的脚本,常用于设置变量、修改请求参数或动态生成数据。

操作步骤

  1. 编写 Pre-request Script
    • 在请求的“Pre-request Script”选项卡中编写 JavaScript 脚本。

示例

自动生成一个随机的 API 密钥:

const apiKey = Math.random().toString(36).substring(2, 15);
pm.environment.set("api_key", apiKey);
3.2 Tests

Tests 是在请求响应后执行的脚本,常用于验证响应状态码、响应体内容和 Headers。

操作步骤

  1. 编写测试脚本
    • 在请求的“Tests”选项卡中编写 JavaScript 脚本。

示例

检查响应状态码是否为 200,响应体是否包含 success 字段:

pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});pm.test("Response contains success", function () {pm.expect(pm.response.json()).to.have.property("success");
});

四、Postman 自动化与 CI/CD 集成

Postman 不仅适用于手动测试,还可以与持续集成/持续交付(CI/CD)系统集成,实现自动化测试和部署。

4.1 通过 Newman 执行集合测试

Newman 是 Postman 的命令行运行器,允许在命令行中运行 Postman 集合测试,非常适合集成到 CI/CD 管道中。

安装 Newman

npm install -g newman

运行集合

  1. 导出集合和环境文件

    • 在 Postman 中,将集合和环境导出为 JSON 文件。
  2. 使用 Newman 运行集合

newman run path/to/collection.json -e path/to/environment.json

示例

运行一个名为 my-collection.json 的集合,并使用 my-environment.json 作为环境配置:

newman run my-collection.json -e my-environment.json
4.2 在 CI/CD 系统中集成

Postman 可以与 Jenkins、GitLab CI、Travis CI 等 CI/CD 工具集成,实现自动化测试。

操作步骤

  1. 配置集合和环境

    • 在 Postman 中创建并导出集合和环境文件。
  2. 编写 CI/CD 脚本

    • 在 CI/CD 系统中,编写脚本调用 Newman 运行集合测试。

示例

在 Jenkins 中的 Jenkinsfile 中运行 Postman 测试:

pipeline {agent anystages {stage('Test') {steps {sh 'newman run path/to/collection.json -e path/to/environment.json'}}}
}

五、利用 Postman 插件扩展功能

Postman 支持多种插件和扩展,可以通过 Postman 的插件市场(Postman Plugin Marketplace)来安装和使用。

5.1 Postman 插件

操作步骤

  1. 访问插件市场

    • 打开 Postman,点击左侧边栏的插件图标(积木状图标)。
  2. 安装插件

    • 在插件市场中浏览和搜索插件,点击“Install”按钮安装所需的插件。

常用插件

  • Postman Interceptor

    • 用于捕获和同步浏览器请求到 Postman,方便调试 Web 应用的 API 请求。

    操作步骤

    • 安装 Postman Interceptor 插件,并在 Chrome 浏览器中安装相应的 Postman Interceptor 扩展。
    • 在 Postman 中启用 Interceptor,并连接到浏览器扩展。
    • 开启“捕获请求”功能,在浏览器中进行操作,Postman 会自动捕获这些请求。
  • Postman Code Generator

    • 将 Postman 请求生成多种编程语言的代码片段,

方便在应用中使用。

操作步骤

  • 打开一个请求,点击右上角的“Code”按钮。

  • 在弹出的窗口中选择需要生成代码的语言和框架,Postman 会生成相应的代码片段。

  • Postman Visualizer

    • 将响应数据可视化为图表或表格,方便分析和展示数据。

    操作步骤

    • 在请求的“Tests”选项卡中编写 JavaScript 脚本,使用 pm.visualizer.set 方法定义可视化模板和数据。

    示例

    const template = `<table><tr><th>ID</th><th>Name</th></tr>{{#each response}}<tr><td>{{this.id}}</td><td>{{this.name}}</td></tr>{{/each}}</table>
    `;pm.visualizer.set(template, { response: pm.response.json() });
    

六、Postman 的使用技巧

Postman 的高效使用可以显著提升 API 开发和测试的效率。以下是一些常用的使用技巧。

6.1 快捷键

Postman 支持许多快捷键,可以加快操作速度。

常用快捷键

  • Ctrl + T:新建 Tab。
  • Ctrl + S:保存请求。
  • Ctrl + Enter:发送请求。
  • Ctrl + F:搜索请求。
6.2 Mock Server

Postman 的 Mock Server 功能可以模拟 API 响应,适用于前后端分离开发和测试。

操作步骤

  1. 创建 Mock Server

    • 在 Postman 中点击左侧的“Mock Servers”面板,点击“Create a Mock Server”按钮。
    • 选择要模拟的集合和响应,配置 Mock Server 的 URL 和环境。
  2. 使用 Mock Server

    • 在请求中使用 Mock Server 的 URL 进行调用,模拟真实的 API 响应。
6.3 监视器

Postman 的监视器可以定期运行集合,监控 API 的性能和可用性。

操作步骤

  1. 创建监视器

    • 在 Postman 中点击左侧的“Monitors”面板,点击“Create a Monitor”按钮。
    • 选择要监视的集合和环境,设置监视器的运行频率和通知方式。
  2. 查看监视器结果

    • 监视器会定期运行集合,并生成报告,可以在 Postman 中查看运行结果和性能指标。

七、总结

Postman 是一个功能强大的 API 开发和测试工具,提供了丰富的高级功能,如环境管理、变量使用、请求链、集合测试、脚本、自动化集成和插件扩展等。这些功能可以大大提升 API 开发和测试的效率。通过掌握这些高级用法,开发者可以更高效地进行 API 调试、测试和自动化流程的实现。

相关文章:

Postman 高级用法学习

Postman 高级用法 Postman 是一款强大的 API 调试和开发工具&#xff0c;广泛应用于 API 开发、测试、调试和自动化流程中。除了基本的 API 请求发送和响应查看功能&#xff0c;Postman 还提供了许多高级功能。以下是详细的讲解&#xff0c;包括具体示例和操作步骤。 一、环境…...

从新手到高手:Scala函数式编程完全指南,Scala 访问修饰符(6)

1、Scala 访问修饰符 Scala 访问修饰符基本和Java的一样&#xff0c;分别有&#xff1a;private&#xff0c;protected&#xff0c;public。 如果没有指定访问修饰符&#xff0c;默认情况下&#xff0c;Scala 对象的访问级别都是 public。 Scala 中的 private 限定符&#xff…...

IDEA 一键部署Docker

以部署示例服务&#xff08;sevnce-demo&#xff09;为例。 配置服务器 地址、账号、密码根据实际情况填写 配置镜像仓库 地址、账号、密码根据实际情况填写 编写Dockerfile 在sevnce-demo根目录下右键&#xff0c;选择创建Dockerfile。 # 基础镜像 FROM sevnce-registry.c…...

linux centos tomcat 不安全的HTTP请求方法

1、页面查看 2、在linux主机可使用此命令查看 curl -v -X OPTIONS http://实际地址 3、进入tomcat conf目录vim web.xml&#xff0c;增加以下内容 <!-- close insecure http methods --> <security-constraint><web-resource-collection><web-resource…...

深入Django(六)

Django的表单系统 引言 在前五天的教程中&#xff0c;我们介绍了Django的基本概念、模型、视图、模板和URL路由。今天&#xff0c;我们将讨论Django的表单系统&#xff0c;它是处理用户输入、验证数据和与模型交互的重要组件。 Django表单系统概述 Django的表单系统提供了一…...

PHP房产小程序微信小程序系统源码

&#x1f3e0;—— 购房租房&#xff0c;一“指”搞定&#x1f3e1; &#x1f50d;【开篇&#xff1a;房产新视界&#xff0c;尽在掌握】 在这个信息爆炸的时代&#xff0c;找房子不再是一场漫长的奔波。有了“房产微信小程序”&#xff0c;无论是购房还是租房&#xff0c;都…...

vscode 历史便携版下载方法

vscode 历史版本地址 https://code.visualstudio.com/updates/v1_75#_remote-developmentexe 信息 下载链接 https://vscode.download.prss.microsoft.com/dbazure/download/stable/5437499feb04f7a586f677b155b039bc2b3669eb/VSCodeUserSetup-x64-1.90.2.exe需要使用的 com…...

深入理解计算机系统 CSAPP 家庭作业8.19

假设n1 会打印 2行 hello 假设n2 会打印 4行 hello 假设n3 会打印 8行 hello 答案 2的n次方...

JDBC学习(Java DataBase Connectivity)

JDBC简介 JDBC入门 驱动jar包&#xff1a;C:\Users\49960\Desktop\mysql-connector-j-9.0.0 需要配置add library&#xff01;&#xff01;&#xff01; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.Stack;pub…...

2024源代码加密软件评测丨保护企业源代码防泄密

为什么需要对源代码进行加密&#xff1f;因为源代码泄密可能会带来一系列严重的后果&#xff1a; 源代码泄密会导致企业的知识产权被盗窃&#xff0c;竞争对手可能会利用这些代码开发类似的产品&#xff0c;从而削弱公司的市场竞争力。 由于知识产权被盗&#xff0c;公司可能会…...

测试图片上传功能,使用postman提供的url

是不是有时候想要测试图片上传功能&#xff0c;但是没有后台url进行测试&#xff0c;这时候就可以使用postman提供的url&#xff1a; https://postman-echo.com/post接下来&#xff0c;我将教你在postman中&#xff0c;用该url测试图片上传功能。 1.发送图片上传请求 第一步…...

使用dot来画流程图

Dot是一种图形描述语言&#xff0c;属于Graphviz软件的一部分。Graphviz是一个用于可视化图形&#xff08;图表、网络图等&#xff09;的开源工具集。使用Dot语言&#xff0c;你可以创建并描述节点和边&#xff0c;从而生成图形。以下是如何使用Dot语言画图的基本步骤&#xff…...

基于Java的微信记账小程序【附源码】

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;记账微信小程序被用户普遍使用&#xff0c;为方便用户能够…...

uniapp中 uni.previewImage用法

查看多张照片&#xff0c;图片地址用逗号分隔 showimig(item) {if (item.trainingRoom) {const urls item.trainingRoom.split(,);uni.previewImage({urls: urls,current: ,success: function(res) {// 成功的回调},fail: function(res) {// 失败的回调},complete: function(…...

第十三章 StringTable

String 的基本特性 String&#xff1a;字符串&#xff0c;使用一对 “” 引起来表示 // 两种定义方式 String s1 "atguigu"; // 字面量的定义方式 String s2 new String("hello");String 声明为 final 的&#xff0c;不可被继承String 实现了 Serializ…...

Adobe Acrobat添加时间戳服务器

文章目录 前言一、Adobe Acrobat添加时间戳服务器1.打开Adobe Acrobat软件2.点击【菜单】→ 【首选项】3.点击【安全性】→【更多】4.点击【新建】5.输入【名称】→【服务器URL】 前言 一、Adobe Acrobat添加时间戳服务器 1.打开Adobe Acrobat软件 2.点击【菜单】→ 【首选项…...

数据库管理-第217期 Oracle的高可用-02(20240704)

数据库管理217期 2024-07-04 数据库管理-第217期 Oracle的高可用-02&#xff08;20240704&#xff09;1 GDS简介2 GDS架构2.1 全局数据服务池2.2 全局数据服务域2.3 全局服务管理2.4 全局数据服务目录2.5 Oracle通知服务 3 GDS简图3.1 负载均衡3.2 只读服务失败转移3.3 多主复制…...

搭建基础库~

前言 项目中会用到工具库、函数库以及一些跟框架绑定的组件&#xff0c;如果这些基础模块每个项目都实现一套&#xff0c;维护起来那真的头大&#xff0c;你说呢&#x1f609; 搭建流程 准备工作 创建文件夹myLib、安装Git以及pnpm 目录大概就系这样子&#xff1a; myLib ├…...

深入了解Linux中的udhcpc:动态主机配置协议客户端

目录 什么是udhcpc&#xff1f;安装udhcpc配置网络接口使用udhcpc获取IP地址配置静态IP地址自定义udhcpc脚本高级选项udhcpc常见问题及排查方法1. 无法获取IP地址2. DNS配置不正确3. IP地址冲突4. 无法连接到默认网关5. 无法执行自定义脚本 在Linux系统中&#xff0c;网络配置是…...

O2OA(翱途) 开发平台之HTTP端口规划

O2OA(翱途) 开发平台[下称O2OA开发平台或者O2OA]采用相对灵活的系统架构&#xff0c;支持三种服务器运行的方式。本篇主要阐述合并服务运行独立服务运行代理端口运行三种服务器运行方式。 一、先决条件&#xff1a; 1、O2Server服务器正常运行&#xff0c;系统安装部署请参考文…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...