在 Apidog 中,在端点内发送请求后,Apidog 会根据端点的规范自动验证响应是否符合 schema。验证规则#
验证范围#
数据格式: 返回内容的格式(JSON、XML、HTML、Raw、Binary、No-Content、MsgPack、Event-Stream)。
Schemas: 只有 JSON 和 XML 可以配置 schemas。有关数据结构的详细说明,请参阅 Schemas。 | 验证项 | 属性类型 | 验证提示示例 |
|---|
| 必需键是否存在 | All | $ should have required property "code" |
| 值类型是否与规范匹配 | All | $.data.id should be integer |
| 非空键不得为 null 值 | All | $.data.id should be integer |
| 枚举值是否在范围内 | String, Integer, Number | $.data.status should be equal to one of predefined values |
| 数值是否在范围内 | Integer, Number | $.data.id should be >= 0 |
| 数值是否符合倍数要求 | Integer, Number | $.data.quantity should be a multiple of 10 |
| 字符串长度是否在范围内 | String | $.data.name should not be shorter than 3 characters |
| 字符串是否匹配模式 | String | $.data.name should match pattern "^[A-Za-z]" |
| 数组元素数量是否在范围内 | Array | $.data.tags should not have more than 2 items |
接下来该怎么做#
如果以上各项一致,将显示“Response Data Structure validated!”。这意味着实际 API 返回值与 API 文档规范一致,无需手动验证,从而提高效率。通常有两类问题:第一类是服务器的响应不正确,此时需要修改后端以与规范保持一致;第二类是 API 规范不正确,需要修改端点规范。通过使用自动验证功能,你可以无需手动编写脚本来验证响应。此外,当 API 规范发生变化时,验证也会自动相应调整。验证其他响应#
默认情况下,Apidog 会验证端点中的第一个响应,通常是 200 响应。但是,一个端点可能会返回多个不同的响应,并且具有不同的 schemas。在这种情况下,你可以在验证区域的右上角选择要验证的响应。你也可以通过点击响应前面的开关来关闭“validate”功能。此更改仅适用于当前端点。验证附加属性#
随着实际业务升级,响应中可能会添加附加属性。在这种情况下,Apidog 允许用户决定是否允许附加字段。例如,有一个用于查询用户信息的 API,之前的返回字段为 name 和 phone。因此,数据结构被指定为:随着业务升级,该 API 新增了一个 city 字段,但 API spec 没有更新。根据默认验证机制,不会报告错误,这意味着默认允许添加附加字段。但是,对于更严格的开发场景,如果返回值包含与定义不匹配的附加字段,响应验证也应报告错误。在这种情况下,你可以按照以下步骤实现所需行为:1.
修改 API spec 中的响应。在 object 的高级设置中,将 “additionalProperties” 配置为 “Deny”,这将仅对当前 API 生效。
2.
如果你想在项目中的所有 API 中禁止附加字段,可以进入 Settings → Response Validate Settings,并关闭 Allow Objects to Have additionalProperties。
3.
完成配置后,再次发送请求时,响应验证机制将报告错误,指出不允许 additionalProperties。
验证设置#
“Validate Response” 开关默认开启,你可以在项目设置界面的 “Verification Response Settings” 中进行调整。此设置仅对当前项目中的所有 API 生效,不会影响已保存的 Endpoint Cases。如果你只需要手动断言或后置脚本,而不需要 Apidog 验证响应与 API 规范的一致性,则可以针对特定模块禁用验证功能。验证响应内容#
验证响应包含 “HTTP Status”、“Header”、“Body”,你可以在项目设置中的 “Validate Response Content” 中进行调整。此设置仅对当前项目中的所有 API 生效,不会影响已保存的 Endpoint Cases。 Modified at 2026-06-09 08:55:47