我从一些JSON文件创建了一个API规范,我正在尝试测试文件是否根据API规范进行验证。
有一些很好的工具可以验证JSON Schema,但是我没有机会找到一个工具来验证在Swagger中创建的规范(用于创建API模式的工具)。我找到的唯一解决方案是在Swagger-Editor中生成客户端/服务器,这非常麻烦。
是否已有一个现有工具可以针对Swagger Schema验证JSON?
答案 0 :(得分:23)
评论中的Arnaud是正确的,这里有两个不同的问题。
您想验证您的规范是否是有效的OpenAPI(fka.Swagger)规范
你可以
或验证此规范的实现是否会产生对您的JSON模式有效的JSON?
换句话说,这里有来自请求或响应主体的一些JSON,它是否正确?
Swagger依赖于另一个名为JSON Schema的标准schema objects,它实际上描述了JSON(而不是端点或元数据)。 Swagger使用JSON Schema的子集(缺少:oneOf
,patternProperties
等等。为此,您可以使用JSON Schema验证器。有37 listed here;我将向this online validator发出支持YAML模式的内容。
但是,当我说Swagger依赖于JSON API的一个子集时,我撒了谎。有一些固定字段在Swagger中具有特殊含义,它们不属于JSON Schema。其中一个是discriminator
,用于多态性。 我不知道可以处理discriminator
的Swagger验证程序。有一个fair number of tools用于招摇,有些人声称要进行验证,但许多是放弃软件,用于旧版本,不是功能完整,与其他技术绑定,等等。如果我找不到一个成熟且维护良好的图书馆,我很想知道。
答案 1 :(得分:1)
如果托管了Swagger JSON,您可以使用以下网址: http://online.swagger.io/validator/debug?url=your_url
答案 2 :(得分:1)
Atlassian's swagger-request-validator是可以执行此类验证的Java库:
一个Java库,用于根据OpenAPI / Swagger规范验证请求/响应。包括对Swagger v2和OpenAPI v3规范的支持以及用于常见模拟和测试库的适配器。
核心库未绑定到任何特定的HTTP库,但它们还提供了与Spring MVC,MockMVC,REST Assured等集成的其他模块。
还有swagger-schema-validator可以针对Swagger V2定义验证JSON文档(免责声明:我是作者)。但是,此Java库不如Atlassian完整。
答案 3 :(得分:0)
OpenAPI 2.0 / Swagger模式在一些地方可用,由于在swagger本身中大量使用了'schema'一词,因此很难找到它。
因此,您可以将通用验证器指向此架构和您的文档。例如,这对我使用vscode和Red Hat的YAML扩展非常有效。