求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
PostMan 中文文档
入门
1.介绍
2.安装与更新
3.导航邮递员
4.发送您的第一个请求
5.管理您的帐户
6.同步您的工作
7.探索公共 API 网络
8.创建您的第一个系列
9.使用便笺本
10.创建工作区
11.设置邮递员
12.导入和导出数据
13.使用自定义代理
14.应用程序问题疑难解答
发送请求
15.构建请求
16.授权请求
17.接收响应
18.对集合中的请求进行分组
19.使用变量
20.管理环境
21.可视化响应
22.指定示例
23.使用 cookie
24.使用证书
25.生成客户端代码
26.故障排除请求
27.捕获请求数据概览
28.捕获 HTTP 请求
29.捕获 HTTPS 流量
30.使用邮递员拦截器
31.同步 cookie
32.使用 GraphQL 查询
33.使用 WebSocket 请求
34.发出 SOAP 请求
编写脚本
35.Postman 中的脚本
36.编写预请求脚本
37.编写测试
38.使用监视器运行测试
39.测试脚本示例
40.动态变量
41.邮递员 JavaScript 参考
运行合集
42.使用收集运行器
43.使用监视器调度运行
44.使用 webhook 触发运行
45.构建请求工作流
46.导入数据文件
在Postman中协作
47.与您的团队合作
48.定义角色
49.请求访问
50.分享你的工作
51.您的私有 API 网络
52.评论收藏
53.使用版本控制
54.公共工作区
55.管理公共元素
设计和开发你的API
56.API 开发概述
57.创建 API
58.版本控制 API
59.定义 API 规范
60.生成服务器代码
61.测试 API
62.部署 API
63.观察 API
64.管理和共享 API
65.验证 API
66.使用报告进行分析
发布你的API
67.记录您的 API
68.创作您的文档
69.发布您的文档
70.查看文档
71.使用自定义域
监控你的API
72.监控您的 API
73.监控 API 正常运行时间
74.设置基于集合的监视器
75.查看基于集合的监控结果
76.管理显示器使用情况
77.使用静态 IP 运行监视器
78.监视器故障排除
79.监控常见问题
API安全
80.令牌扫描仪
行政
81.采购邮递员
82.计费
83.配置团队设置
84.利用审计日志
85.入职清单
86.在团队之间迁移数据
87.将您的团队升级到当前版本的 Postman
88.管理企业部署
开发商
89.使用 Postman 实用程序进行开发
90.邮递员 API
91.回声 API
92.采集 SDK
93.Postman 运行时库
94.代码生成器库
95.邮递员收藏转换
集成
96.与邮递员集成
97.自定义 Webhook
98.CI 集成
99.圈子CI
100.特拉维斯 CI
使用 Newman CLI
101.使用 Newman 在命令行上运行集合
102.Newman与 Docker
103.带有 Postman API 的 CI
104.与 Travis CI 集成
105.与Jenkins集成
使用工作区
106.创建工作区
107.使用和管理工作区
108.查看工作区活动
109.解决团队冲突
模拟数据
110.设置模拟服务器
111.用例子模拟
112.使用 Postman API 模拟
113.了解示例匹配
Run Postman
114.使用在 Postman 中运行按钮
115.在 Postman 按钮中创建运行
116.在 Postman 中使用 Run 进行编码
117.API 架构安全警告
118.OpenAPI 3.0 警告
119.OpenAPI 2.0 警告
120.管理你的团队
121.管理用户组
122.配置域捕获
123.SSO 简介
124.为团队配置 SSO
125.登录 SSO 团队
126.微软广告文件系统
 
 
目录
了解示例匹配
来源: Postman    编辑:Alice(火龙果软件)

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



49 次浏览
2次

使用 Postman 模拟服务需要以下条件:包含请求的集合、模拟服务器和已保存的请求示例。您可以根据需要将尽可能多的示例保存到集合中,并且模拟服务器会以可预测的方式返回这些示例。但是,mock 究竟是如何决定返回哪个示例的呢?

模拟的匹配算法

首先,让我们从一个例子开始。

当使用 Postman API 或 Postman 应用程序创建模拟时,将调用 Postman 服务器,将特定集合(和环境,如果您选择一个)与新创建的模拟相关联。刚刚模拟的集合C1现在与新的模拟相关联M1。

当您M1通过 Postman 应用程序中的模拟 URL使用模拟https://M1.mock.pstmn.io时,模拟服务将在开始匹配过程之前从 Postman 服务器检索该特定集合的所有已保存示例。

现在模拟服务已经保存了当前集合的所有示例,它现在将迭代地将传入请求与最接近的匹配示例配对。

传入的请求可以有几个可配置的变量,例如requestMethod和mockPath。该requestMethod变量对应于任何有效的 HTTP 请求方法(例如GET, POST, PUT, PATCH, DELETE, 等),而mockPath指的是任何有效的字符串路径(例如/, /test, /test/path, /test/path/1)。

其他可选标头,例如x-mock-response-name或x-mock-response-id允许您进一步指定要分别由名称或已保存示例的 UID 返回的示例。您可以通过使用 Postman API获取单个集合并在响应中搜索您的示例来获取示例响应 UID 。UID 具有语法<user_id>-<response_id>。

牢记这些不同的可配置元素,让我们看一下匹配算法逻辑。

1.格式正确的响应

任何不符合预期格式的响应都会从匹配过程中删除。

2.HTTP方法

任何不是相同 HTTP 方法类型的响应都将从匹配过程中删除。例如:如果您发送的模拟请求是POSTto https://M1.mock.pstmn.io/test,则所有保存的方法类型不是的示例都POST将被忽略。

3.按 URL 过滤

匹配过程现在将检查每个保存的示例,并遍历所有可能性。将mockPath输入 URL 的 与保存的示例的 URL 进行比较。如果输入 URL 是https://M1.mock.pstmn.io/test并且当前正在检查的示例的 URL 是https://google.com/help,则模拟服务将/test与进行比较/help。在比较 URL 时,会进行逐步匹配。匹配算法遍历的每个连续步骤都会降低当前示例响应的匹配阈值。

例如:

  • 尝试将输入路径与示例路径完全匹配。最大值设置为匹配阈值。

  • 尝试去除尾部斜杠并将输入路径与示例路径匹配。阈值降低了某个值,n。

  • 尝试另外小写输入路径和示例路径 阈值减小一个更大的值,n + m。

  • 尝试另外从输入路径和示例路径中去除字母数字 ID。阈值进一步降低,n + 2m。

  • 如果所有步骤都失败,则此保存的示例不是合格的响应。

  • 匹配 URL 时也会考虑参数(例如{{url}}/path?status=pass),这些参数可用于确定要显示的示例。

4.通配符

示例请求中所有未解析的变量(不存在于模拟服务器的关联环境中)都被视为通配符变量。通配符变量充当动态 URL 段的捕获组。如果 API 的 URL 的某些部分映射到资源标识符(如用户 ID、用户名或文件名),您会发现这很有用。

例如,假设您正在模拟一个按 ID 返回用户配置文件的端点。它从 URL 中获取用户 ID,并在响应中返回用户 ID。因此,在调用GET {{url}}/users/{{userId}}时,端点应该返回:

{
  "id": 2,
  "name": "Carol"
}

 

要在模拟中匹配这样的请求,您现在可以在示例的请求 URL 中使用变量。您不需要在示例中对值进行硬编码。相反,您可以匹配发送到模拟服务器的任何与模式匹配的请求GET /users/<userId>。您只需要替换动态段

通配符匹配仅适用于整个 URL 路径段。所以,同样的例子,GET {{url}}/users/{{userId}}可以服务GET /users/1,GET /users/100甚至GET /users/carol。但是,它不会匹配GET /users/foo/bar。

您可以在示例的响应中使用相同的变量来使用它们捕获的值。以相同的示例,您可以为相同的示例添加请求正文,如下所示:

{
  "id": {{userId}},
  "name": "Carol"
}

这将从具有相同变量名称的通配符段捕获的值传递到响应中。

响应正文中的通配符不是匹配算法的一部分。

5.响应代码

如果x-mock-response-code明确提供了标头,则过滤掉所有没有匹配响应代码的示例。

6.最高阈值

将剩余的过滤响应按降序排序,并返回具有最高阈值的响应。

这就是模拟服务如何找到并返回对模拟请求的适当响应的方式。

 

 

49 次浏览
2次