针对 Swagger API 模式验证 JSON

Validating JSON against Swagger API schema

我从一些 JSON 文件创建了一个 API 规范,我正在尝试测试这些文件是否根据 API 规范进行验证。

有一些很好的工具可以根据 JSON 模式进行验证,但我没有机会找到一种工具来根据 Swagger 中创建的规范(用于创建 API 模式的工具)进行验证。我找到的唯一解决方案是在 Swagger-Editor 中生成一个 client/server,这很麻烦。

是否已经有现成的工具来针对 Swagger Schema 验证JSON?

如果托管了您的 Swagger JSON,您可以使用以下内容 url: http://online.swagger.io/validator/debug?url=your_url

评论中的 Arnaud 是正确的,这里有两个单独的问题。

Do you want to validate that your spec is a valid OpenAPI (fka. Swagger) spec

你可以

  • 将您的规范复制到 online Swagger editor and it will throw errors. A quick dive through the source 并没有告诉我它使用什么来创建这些错误,但它似乎没有联系服务器来执行此操作...
  • Java使用官方swagger-parser
  • 为Java脚本(浏览器或节点)使用非官方swagger-parser

or validate that an implementation of this spec would produce JSON which is valid regarding your JSON schemas?

换句话说,这里有一些来自请求或响应正文的 JSON,是否正确?

Swagger 的 schema objects, which are what actually describes the JSON (rather than endpoints or metadata). Swagger uses a subset of JSON Schema (missing: oneOf, patternProperties, among others). To that end, you can use a JSON Schema validator. There are 37 listed here; I'll give a shoutout to this online validator 依赖另一个名为 JSON Schema 的标准,该标准也支持 YAML 模式。

但是,当我说 Swagger 依赖于 JSON API 的一个子集时,我撒了谎。有一些固定字段在 Swagger 中具有特殊含义,它们不属于 JSON Schema。其中之一是 discriminator 用于多态性。 我不知道可以处理 discriminator 的 Swagger 验证器。有一个 fair number of tools 用于 swagger 和一些声称进行验证,但许多是废弃软件,用于旧版本,功能不完整,与其他技术相关,等等。如果我缺少一个成熟且维护良好的库,我很想知道。

OpenAPI 2.0 / Swagger 架构在几个地方可用,只是有点难找,因为在 swagger 本身中大量使用 'schema' 这个词。

因此您可以将通用验证器指向此模式和您的文档。例如,使用 vscode 和 Red Hat 的 YAML 扩展对我来说效果很好。

Atlassian's swagger-request-validator 是可以进行此类验证的 Java 库:

A Java library for validating request/responses against a OpenAPI / Swagger specification. Includes support for Swagger v2 and OpenAPI v3 specifications and adapters for common mock and testing libraries.

核心库不依赖于任何特定的 HTTP 库,但它们还提供与 Spring MVC、MockMVC、REST Assured 等集成的附加模块

还有 swagger-schema-validator 可以根据 Swagger V2 定义验证 JSON 文档(免责声明:我是作者)。这个 Java 库不如 Atlassian 的完整。

您可以使用 OpenAPI validation 支持 openAPI V3 来验证 OpenAPI 架构。