用例子模拟

模拟服务器通过返回预定义数据来模拟 API,使您能够在 API 投入生产之前(或不使用生产数据)对其进行开发或测试。在 Postman 中,模拟服务器依赖于保存在集合中的示例来返回模拟数据。按照下面的步骤,动手演示模拟服务器和示例如何协同工作,并了解如何将它们集成到 API 工作流程中。

内容

创建模拟服务器

以下步骤将引导您完成在 Postman 中创建模拟服务器的过程。首先,您将设置模拟服务器工作所需的一些基础知识。一旦您的模拟服务器启动并运行,您将向它发送请求并查看您的示例如何用于返回数据。

第 1 步:发送请求

在 Postman 中,通过选择+或选择New > HTTP Request打开一个新请求。保留GET方法,并为请求 URL 输入https://postman-echo.com/get?test=123。准备就绪后,选择发送

此请求调用Postman Echo服务,您可以使用该服务测试 REST 或 SOAP 客户端并进行示例 API 调用。生成的响应显示在请求下方的响应窗格中。

发送请求

第 2 步:将请求保存到集合

选择保存以将请求保存在集合中。集合是可用于组织工作和创建 API 工作流的请求组。

保存请求

选择保存请求对话框底部的新集合。输入集合名称并选择Create。然后选择保存以将请求保存到新集合。C1

保存请求对话框

第 3 步:将响应保存为示例

要保存从 Postman Echo 服务收到的响应,请选择Save Response > Save as example。该示例保存在请求下方的C1集合中。

保存示例

选择左侧边栏中的集合,展开C1集合和请求,然后选择示例将其打开。

打开一个例子

编辑图标要重命名示例,请选择名称旁边的编辑图标。重命名示例E1。请注意,请求方法、URL 和状态代码都保存为示例的一部分。Postman 使用这些项目来确定模拟服务器返回哪些响应。

重命名示例

第 4 步:为集合创建一个模拟服务器

现在您已经将一个示例添加到您的集合中,您可以设置一个模拟服务器了。在左侧边栏中选择集合。三个点图标选择集合旁边的三个点C1,然后选择Mock collection

模拟一个集合

对于模拟服务器名称,输入M1。您还可以根据需要为模拟服务器指定其他详细信息:

  • 集合已设置为C1,因为您选择模拟此集合。
  • 如果您的收藏有多个发布标签,您可以选择要使用的标签。由于这是一个新集合,您只能选择Current
  • 如果您保存的示例使用环境变量(如{{base_url}}/my/path),则必须选择相应的环境,否则模拟服务器将无法工作。在这种情况下,该示例不使用任何变量,因此您可以选择No Environment
  • 默认情况下,模拟服务器是可公开访问的。如果您选中Make mock server private复选框,则 mock 服务器将不再是公共的。您可以与团队成员共享它并提供编辑或查看权限。目前,不要选中此复选框。

完成模拟服务器的配置后,选择Create Mock Server。您可以随时通过选择左侧边栏中的模拟服务器来访问模拟服务器。

创建模拟服务器

您还可以使用 Postman API创建模拟服务器。

第 5 步:向模拟服务器发送请求

现在您已经创建了模拟服务器M1,您可以尝试向模拟端点发送请求。

首先,复制模拟服务器 URL。选择左侧边栏中的Mock Servers,选择M1模拟服务器,然后选择Copy Mock URL

复制模拟网址

接下来,通过选择+或选择New > HTTP Request创建一个新请求。将模拟 URL 粘贴到新请求中,然后选择Send

模拟服务器错误响应

发送此请求会返回错误。原因是您没有添加到模拟服务器 URL 的路径,并且没有匹配的保存示例具有未定义的路径和请求方法GET。模拟服务返回的响应完全取决于您保存的示例中的 URL 和方法。

但是,您确实有一个包含路径/get和请求方法的已保存示例GET。添加/get到模拟服务器 URL 的末尾并再次发送请求。这次您会收到来自模拟服务器的预期响应。

模拟服务器正确响应

第 6 步:添加另一个示例

要进一步演示来自模拟服务的响应如何完全依赖于您保存的示例,请尝试将另一个示例添加到C1集合中。重复上述步骤 1 到 3 以将请求保存到集合中,然后将响应保存为示例E2,这次使用请求 URL https://postman-echo.com/test

添加第二个示例

发送GET请求以https://postman-echo.com/test返回 404 错误,您将其保存为另一个示例。该集合C1现在有两个请求和两个保存的示例:

  • 示例 E1: GET请求路径/get
  • 示例 E2: GET请求路径/test

最后,重复上面的第 5 步,但是这次/test在发送请求时将路径添加到模拟服务器 URL 的末尾。这将返回预期的 404 响应。

向模拟服务器发送另一个请求

您的示例可能因 URL 端点、请求方法或状态代码而异。如果您有多个示例,您可以选择将每个示例保存在唯一的端点 URL 下,就像您在本演示中看到的那样,使用/get/test。如果您保存了具有不同响应状态代码的示例,您可以向模拟服务器发送一个经过身份验证的请求以及x-mock-response-code指定您返回的响应应该匹配哪个整数响应代码的标头。

使用动态变量生成随机数据

正如您在本演示中所见,您在示例中定义了要由模拟服务器返回的数据。但是,在某些情况下,您可能希望模拟服务器返回包含随机数据的响应。

要让您的模拟服务器返回随机数据,请在示例的响应正文中使用动态变量。动态变量作为模拟服务器响应的一部分解析并替换为随机数据。动态变量可用于在模拟 API 时生成随机数据,您可以将它们用于探索性测试和编写丰富的数据驱动测试。

例如,您的示例的响应正文可能包含如下动态变量:

{
    "name": "{{$randomFullName}}",
    "userName": "{{$randomUserName}}",
    "location": "{{$randomCity}}",
    "company": "{{$randomCompanyName}}",
    "jobTitle": "{{$randomJobTitle}}",
    "updatedAt": "{{$timestamp}}"
}

当您调用模拟服务器端点时,您会看到响应数据更改为:

{
    "name": "Cielo McClure",
    "userName": "Aurelie.Lockman",
    "location": "Kubhaven",
    "company": "Runolfsdottir, Bernhard and Hodkiewicz",
    "jobTitle": "Direct Branding Liaison",
    "updatedAt": "1565088856"
}

有关用于生成随机数据的动态变量的完整列表,请参阅动态变量。

使用查询参数

Postman 的模拟服务使用匹配算法来选择最合适的已保存示例以响应请求而返回。作为该算法的一部分,模拟服务器在将请求与保存的示例匹配时会查看查询参数。如果您的示例仅在查询参数上有所不同,您可以在同一请求路径上模拟不同查询参数的不同响应。在这种情况下,模拟服务器将返回与该请求路径和相应查询参数匹配的确切响应。

这是一个说明匹配查询参数如何工作的场景:

  • 集合Query Params Demo有一个请求Request1和两个示例,Example1Example2

  • Example1中,参数id的值为1

    查询参数示例1
  • Example2中,参数id的值为5

    查询参数示例2
  • 在这种情况下,Example1Example2分别通过15。当您向模拟服务器 URL 发送请求并传递这些不同的查询参数时,Postman 会返回与路径和传递的参数匹配的确切响应。

    查询参数模拟响应

如果没有找到完全匹配,Postman 根据其匹配算法返回最佳响应。

模拟 GraphQL 查询

Postman 的模拟服务使您能够模拟 GraphQL 查询。要模拟 GraphQL 查询,请使用模拟集合中示例中保存的请求路径和请求正文向模拟服务器发出请求。

确保在您的示例中将Content-type标题设置为。application/json

查询参数示例1

还要确保在向模拟服务器 URL 发送请求时传递x-mock-match-request-body带有值的标头。true

查询参数示例1