Postman Mock Server 使用

article/2025/9/18 3:45:34

前言

科普界的老问题了。
大部分博客日志抄官方文档给的初始化样例,啥也不说。
看完除了会create,啥也不会了。
自食其力研究一下。

创建

略。

见document。

https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mocking-with-examples/

或者随便找个中文博客。

推荐 https://zhuanlan.zhihu.com/p/371127186
但这篇文章的部分说法有误
比如文中称"Mock server只会采用最后创建的example"。 这是不对的。Mock Server会按规则匹配对应example。

创建之后,通过copy URL可以得到这个mock server的链接

默认作为公链

逻辑

postman逻辑结构有4层.

collection / folder / request / example

其中request是基本单位, 对应 http请求的寻址.

其实还有一个env,不过对这篇文章来说不重要。

1. request寻址

举例, 有一个http请求如下

axios.request({url:'/api'}
)

则需要对应地在postman中构建一个同地址的request.

{{url}}/api

值得注意的是, request中的地址部分, 前缀固定为"{{url}}"表示占位符.

在这里插入图片描述
在这里插入图片描述
此处输入 {{url}}/api 即可. 记得save.
在这里插入图片描述

最上面那个requestName = "New Request"可改可不改,就这样放着叫new request也无妨。
这个name是仅供postman使用者自己理解用的。
寻址是根据我们填写的url来的。

这样我们约定了一个地址为’/api’ 的接口。
接下来需要约定返回的数据。

2. example数据响应

request本身不能设置response data, 但example可以设置响应数据。

一个request下,可以添加多个example。
postman会根据http请求的不同,自动匹配对应的example,
然后返回该example中的response。

默认情况下,我们应该添加一个名为"Default"的example.
这个是缺省名字, 就像 index.html , __init__.py 之类的一样.
这样写是符合规范的。

下面演示区别

我新建了一个New Request, 设置地址为

{{url}}/login

之后添加两个example, 分别命名为"Default" 和 “login”.

在"Default"中,我约定接口的方法是"POST", 返回值写"postlogin".
在这里插入图片描述

在"example2"中, 约定接口方法为"GET", 返回值 “getlogin”。
在这里插入图片描述

分别发送请求

axios.get({url:'/login'
}).then((res) => {console.log(res.data)})
axios.post({url:'/login'
}).then((res) => {console.log(res.data)})

可以看到非常良好地匹配上了两个example。
在这里插入图片描述

除了method以外, 还能匹配http response code等.

postman的匹配算法说明

https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/matching-algorithm/

3.数据动态响应

postman可以通过占位符传参。

最经典的param传参就是我们很常见的 问号后面跟key:value对的形式。
在这里插入图片描述

但是,经过测试这种键值对的url无法在mock server中被解析。(

mock server绑定动态变量的唯一方式,是通过slash或者backslash符号分割。

例如 /{{varName}}
在这里插入图片描述
这里需要注意的是,在response Body部分,
也是会经过mustache语法匹配,将"{{userID}}"部分替换为相应变量值的字符串

也可以使用反斜杠
/api/example\{{userID}}

这样写也能取到变量。

postman 官方似乎不推荐动态响应。
他们更希望你考虑多个不同的example取值可能性,提前写死所有query。

数据底层

先去https://web.postman.co/settings/me/api-keys
创建一个api-key.

然后新建一个request.
headers里面写上 x-api-key
在这里插入图片描述

url填

https://api.getpostman.com/collections/

请求之后,在response里找到自己的mock name,和对应的uid.
在这里插入图片描述

之后把uid,拼接到url后面

https://api.getpostman.com/collections/13803897-9e2bc2b2-2829-4224-8af8-449f53993b82

再请求一次

这一步返回的是当前mock server下的所有配置信息.

可以看到的是,每个request作为对象存放在 "item"数组中.

request下有一个属性"response"数组.
每个example作为对象存放在其中

在response中能为每个example找到唯一"id".


{"collection": {"info": {"_postman_id": "9e2bc2b2-2829-4224-8af8-449f53993b82","name": "假接口","schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item": [{"name": "New Request","id": "4eb688f1-7e0b-4c82-8708-3523eadc2f25","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "POST","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"]}},"response": [{"id": "428746aa-b59a-4785-a04b-be667a9528e7","name": "Default","originalRequest": {"method": "POST","header": [{"key": "Content-Type","name": "Content-Type","value": "application/javascript","type": "text"}],"body": {"mode": "raw","raw": "","options": {"raw": {"language": "javascript"}}},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"],"query": [{"key": "name","value": "{{name}}","disabled": true},{"key": "password","value": "{{password}}","disabled": true}]}},"code": 200,"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\"id\":\"11\",\"name\":\"abc\",\"token\":\"postlogin\"}"},{"id": "f012d8fb-9622-4544-b0cf-05b1fbfee298","name": "example2","originalRequest": {"method": "GET","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\"id\":\"22\",\"name\":\"abc\",\"token\":\"getlogin\"}"}]},{"name": "/get","id": "7b7d5f1f-75cf-453f-8309-b277bf715d9e","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/get","host": ["{{url}}"],"path": ["get"]}},"response": [{"id": "81501999-3d8a-44af-aa66-8e008bffb714","name": "Default","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/get","host": ["{{url}}"],"path": ["get"]}},"code": 200,"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{ id=1,name='user2', token = 'abcdefg2'}"}]},{"name": "/user","id": "f8e05f82-91cc-41e6-9bdc-e914585d696e","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"url": {"raw": "{{url}}/user/{{userID}}","host": ["{{url}}"],"path": ["user","{{userID}}"],"query": [{"key": "id","value": null,"type": "text","disabled": true}]}},"response": [{"id": "af2743bd-2a3d-43cd-9ad5-775c11f67000","name": "Default","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/user/{{userID}}","host": ["{{url}}"],"path": ["user","{{userID}}"],"query": [{"key": "id","value": null,"type": "text","disabled": true}]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\r\n    \"id\": \"{{userID}}\",\r\n    \"roleID\": \"01\" \r\n}"}]},{"name": "/role","id": "4d8b2c42-f3fd-4737-9329-6ed345021b8a","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"url": {"raw": "{{url}}/role/{{roleID}}","host": ["{{url}}"],"path": ["role","{{roleID}}"]}},"response": [{"id": "0891e08d-0aa0-4075-a63c-782c1f310fa5","name": "/role","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/role/{{roleID}}","host": ["{{url}}"],"path": ["role","{{roleID}}"]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\r\n    \"roleID\":\"{{roleID}}\",\r\n    \"userMenus\":\"uerMenus\"\r\n}"}]}]}
}

在headers中设置

x-mock-response-name 或者
x-mock-response-id

即可对应到我们需要的example.

相当于绕过匹配规则,显式指定返回哪条example的response.

参考https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mock-with-api/


http://chatgpt.dhexx.cn/article/dyRKLFsn.shtml

相关文章

Mock Server基本使用方法

Mock Server 什么是mock servermock server的作用初始Flask配置文件路由系统 【基于flask框架实现Mock Server】get基本方法使用 什么是mock server 实现mock功能的一个服务 mock server的作用 现今的业务系统很少有独立存在的,他们或多或少需要使用兄弟团队或者…

gRPC Mock Server

PowerMock是一个Mock Server的实现,它同时支持HTTP与gRPC协议接口的Mock,并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员,也可以作为一个通用的Mock服务,部署在网关架构或API管理平台中&#…

mock server java_1分钟搭建极简mock server

1、无聊的背景、起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果在联调的时候,恰好被调的接口正在开发,怎么办?傻傻的等么,不存在的!这时会搭建一些serv…

Mock Server入门及实践

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程 什么是Mock Server? Mock测试:就是在测试过程中,对于某些不容易构造或者不容易…

用 java 安装 mockserver,Mock Server实践

背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试,一般做法是,部署好所有外部依赖模块,由被测服务直接调用。然而有…

Mock-- Server的使用

近日项目需求 使用mock-server来提供虚拟数据(API),方便在服务被调用方没有开发好的情况下,服务调用方能不被耽误的继续进行开发 。 我们的情况大概是这样: 我们的服务去调用 另一方提供的服务,另一方的服务可能还没有开发好&…

前端调试,模拟数据利器之Mock Server使用教程来啦~

文章目录 1 MockServer是什么2 为什么要使用MockServer3 MockServer的作用4 搭建MockServer服务4.1 部署MockServer服务详细步骤4.1.1 第一种方式(推荐)4.1.2 第二种方式 4.2 启动Shell脚本4.3 访问MockServer UI界面 5 MockServer服务的基础使用5.1 项目…

浅谈 Mock Server

What?什么是 Mock Server Mock 是模拟的意思。在测试中,通常表述为:对测试过程中不容易构造或者不容易获取的物件,用一个虚拟的物件来进行模拟的一个过程。能够提供 Mock 功能的服务就叫作 Mock Server。 Mock Server 通过模拟真…

Mock Server 入门

Mock Server介绍 什么是mock ? 我在去年的时候介绍一篇幅 python mock的基本使用,http://www.cnblogs.com/fnng/p/5648247.html 主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度。 什么是Mo…

Matlab解决脚本中中文乱码问题

首先下载字体yahei consolas hybrid。百度网盘地址: 链接:https://pan.baidu.com/s/1Zv2FMt3uow7DZix2rtAbrA 提取码:am4d 然后将下载的字体保存在C:\Windows\Fonts中,启动Matlab2018a这里使用的是2018a版本,其他版…

WEB UI自动化测试之AutoMagic自动化测试

AutoMagic自动化测试平台 AutoMagic 是一个基于WebUI的自动化管理平台。为什么叫AutoMagic呢?因为自动化(Automation)在执行起来的时候是一个很神奇的事情,它可以无人值守的模拟人的操作,就像魔术(Magic&a…

Jupyter Notebook从入门到精通

下载 本课程练习完整代码 Jupyter Notebook: https://gist.github.com/zgpeace/8d3eb8c803a54d1ca797fa26cb68bd4c 财富500强 csv下载 https://github.com/zgpeace/fortune500.git 1. 什么是 Jupyter 笔记本? Jupyter Notebook 是一个非常强大的工具&…

dev shm mysql_新特性:/dev/shm对Oracle 11g的影响

ORACLE 从11g版本开始,引入了一个自动内存管理(Automatic Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如 /dev/shm对Oracle 11g的影响: ORACLE 从11g版本开始,引入了一个自动内存管理(Automatic Memory Mana…

Git分布式版本控制工具

Git分布式版本控制工具 文章目录 Git分布式版本控制工具1、目标 2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、Git工作流程图 3、Git安装与常用命令3.1、Git 环境配置3.1.1 下载与安装3.1.2 基本配置3.1.3 为常用指令配置别名3.1.4 解决 GitBash 乱码问题 3.2、获取…

关于我在windows使用volatility取证这档事

官网下载地址:https://www.volatilityfoundation.org/releases volatility3的官方文档:https://volatility3.readthedocs.io/en/latest/basics.html 下载 看清有两个版本,用法不一样 第一次我下载了Volatility 2.6 Windows Standalone Exe…

DLNLP学习笔记03(Speech Recognition: LAS模型)

Listen, Attend, and Spell (LAS) [Chorowski. et al., NIPS’15] 论文地址:https://arxiv.org/pdf/1508.01211.pdf 1 模型简介: 2 Listen:其中Encoder可以为RNN,CNN或者RNNCNN。 Listen-down sampling:(RN…

On Device Debug!IDA+GDB trace automagic.apk in s1

2019独角兽企业重金招聘Python工程师标准>>> http://forum.xda-developers.com/showthread.php?t2050393 Well... I have attached a debugger to native code, set breakpoints, analyzed registers, memory, etc. It wasnt that easy though. It took me severa…

【Jetson Nano 入门】环境配置汇总

文章目录 前言一、镜像烧写二、PWM风扇自动调速三、使用MicroUSB在电脑打开终端四、VNC实现局域网及网线直连通信五、SSH文件传输六、状态监控软件Jtop七、检查CUDA、OpenCV及cuDNN八、USB摄像头测试软件Camorama九、CSI摄像头测试十、实现Yolov4-tiny的USB摄像头实时检测 前言…

WEB UI自动化测试之AutoMagic自动化测试平台开源

作者介绍: 网名: Ray 介绍:笑起来像个孩子,冷起来是个迷。 博客:http://www.cnblogs.com/tsbc/ 2018年3月29日,Ray说准备把AutoMagic自动化测试管理平台开源了!!! 这是个好消息&…

三星s20 android auto,Automagic一个更简单的方式来自动化您的Android手机 | MOS86

你有没有想过你的智能手机会在你回家的时候开始播放音乐?当你关闭社交网络的时候怎么样?Automagic是一种替代方案,通过使用易于理解的流程图执行许多相同的任务,向用户提供了一种更简单的自动化Android手机的方法。 Automagic如何…