大家好,我是G探险者。
Postman我们都不陌生,作为一个广泛使用的 HTTP 客户端,平时我们使用它来测试接口,无非就是把接口的url放进去,然后根据请求类型get或者post,在不同位置传一下参数,除了常见的 Params 和 Body 配置外,还有许多其他重要的功能和配置。以下是对这些主要功能的详细介绍:
1. 配置介绍
1.1 Authorization(授权)
- Postman 支持多种授权方式,例如 Basic Auth、Bearer Token、OAuth 2.0 等。
- 用户可以在此部分输入凭证,例如用户名和密码或访问令牌,以通过 API 的安全验证。
1.2 Headers(请求头)
- 请求头部是 HTTP 请求的重要组成部分,可用于提供关于请求或响应的额外信息。
- 常见的头部包括
Content-Type
(指示请求体的媒体类型)、Accept
(客户端能接受的响应类型)等。
1.3 Body(请求体)
- 在 POST 或 PUT 请求中,Body 部分用于发送数据到服务器。
- 支持多种格式,如 raw(可以选择 JSON、文本、XML 等格式)、form-data、x-www-form-urlencoded 等。
1.4 Pre-request Script(预请求脚本)
- 这是在实际请求发送前执行的 JavaScript 脚本。
- 可用于设置环境变量、参数、动态修改请求体或头部等。
1.5 Tests(测试脚本)
- 在收到响应后执行的 JavaScript 脚本。
- 常用于断言响应数据,例如验证状态码、响应时间、返回的 JSON 结构等。
1.6 Settings(设置)
- 包括一些全局配置,如代理设置、SSL 证书验证、请求超时设置等。
- 可以调整这些设置以符合特定的测试环境或要求。
1.7 Params(参数)
- 通常用于 GET 请求,也可以用于其他类型的请求。
- 这里可以添加 URL 参数,Postman 会自动将它们拼接到请求的 URL 后面。
1.8 Environment(环境)
- 允许用户定义一系列变量,这些变量可以在不同的请求和脚本中使用。
- 例如,可以为不同的开发阶段(开发、测试、生产)设置不同的环境变量。
2. 对比分析
这个表格提供了每个配置项的描述、示例以及它们在 API 测试和开发中的常见应用场景。
参数 | 描述 | 示例 | 适用场景 |
---|---|---|---|
Authorization(授权) | 用于配置 API 认证的方法 | Basic Auth:用户名admin ,密码123456 Bearer Token: mF_9.B5f-4.1JqM | 访问受密码保护的资源,如 API 接口 |
Headers(请求头) | 包含关于请求的元数据 | Content-Type: application/json Accept: application/xml | 指定请求和响应的格式,传递额外的控制信息 |
Body(请求体) | 用于发送数据到服务器,特别是在 POST 或 PUT 请求中 | JSON 数据:{"name": "John", "age": 30} | 提交表单数据,上传文件,发送 JSON 或 XML 数据 |
Pre-request Script(预请求脚本) | 在请求发送之前执行的脚本 | 设置环境变量:pm.environment.set("timestamp", new Date().getTime()); | 设置动态参数,如时间戳,生成签名等 |
Tests(测试脚本) | 在收到响应后执行的脚本 | 验证状态码:pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); | 检查响应的正确性,如状态码,响应体结构 |
Settings(设置) | 包括 SSL 验证、代理设置、请求超时等全局配置 | 禁用 SSL 证书验证,设置请求超时为 30 秒 | 调整请求的网络行为和性能参数 |
Params(参数) | 通常用于 GET 请求的 URL 查询参数 | 查询参数:userId=1 | 在 URL 中添加查询参数,用于过滤结果或指定特定资源 |
Environment(环境) | 用于定义在不同请求和脚本中使用的变量集 | 设置基础 URL:baseUrl = http://localhost:3000 | 在不同开发阶段(如开发、测试、生产)中切换变量 |
通过合理利用这些功能,可以更有效地测试和调试 API,确保其行为符合预期。Postman 提供的这些工具和设置非常灵活,可以满足多种不同的测试需求。
3. Headers和Body各自放什么类型的参数?
以上的很多参数,我们平时可能用不上,这里不做重点关注,我们重点关注一下Headers 和Body.这里就有个问题
什么情况下需要把参数放到Headers里面,什么情况下需要放到Body里面?
具体取决于参数的用途和请求的类型。以下是详细说明:
3.1 Headers(请求头)中的参数类型
-
认证信息:
- 当需要验证用户身份时,如使用 Basic Auth 或 Bearer Token,认证信息通常放在请求头中。
- 示例:
Authorization: Basic YWRtaW46MTIzNDU2
。
-
控制信息:
- 请求头用于传递控制信息,例如告诉服务器如何处理请求。
- 示例:
Content-Type: application/json
指明请求体是 JSON 格式。
-
缓存控制:
- 控制或获取关于缓存策略的信息,如
If-None-Match
或Cache-Control
。
- 控制或获取关于缓存策略的信息,如
-
自定义信息:
- 有些 API 需要特定的头信息来处理请求,例如 API 密钥。
- 示例:
X-API-KEY: abcdef123456
。
-
接受类型:
- 通过
Accept
头部指定客户端期望的响应格式,例如Accept: application/xml
。
- 通过
3.2 Body(请求体)中的参数类型
-
数据创建和修改:
- 在 POST 和 PUT 请求中,当需要在服务器上创建或修改资源时,数据通常放在请求体中。
- 示例:发送 JSON 数据
{ "name": "John", "age": 30 }
以创建新用户。
-
大量数据:
- 当需要发送大量数据时,比如文件上传或长表单,这些数据放在请求体中。
-
非 URL 编码的数据:
- 某些类型的数据不适合放在 URL 中(如二进制数据),因此需要放在请求体里。
-
复杂结构:
- 当数据结构较复杂或有嵌套时(如 JSON 或 XML 格式),放在请求体中更合适。
4. 小结
- Headers 用于传递关于请求本身的元数据,比如如何处理请求、认证信息、期望的响应类型等。
- Body 主要用于传递具体的内容数据,尤其是在创建或修改资源时。
正确地选择将参数放在 Headers 还是 Body 中,对于确保 HTTP 请求的正确性和高效性至关重要。