Подтвердить что ты не робот

Проверка JSON против схемы API Swagger

Я создал спецификацию API из некоторых файлов JSON, и я пытаюсь проверить, проверены ли файлы против спецификации API.

Есть несколько хороших инструментов для проверки против JSON Schema, но у меня не было возможности найти инструмент для проверки против спецификаций, созданных в Swagger (инструмент для создания схемы API). Единственное решение, которое я нашел, - это создание клиента/сервера в редакторе Swagger, это довольно громоздко.

Есть ли уже существующий инструмент для проверки JSON против схемы Swagger?

4b9b3361

Ответ 1

Арно в комментариях правильно, что здесь есть два отдельных вопроса.

Вы хотите проверить, что ваша спецификация является действительной спецификацией OpenAPI (fka. Swagger)

Вы можете

или подтвердите, что реализация этой спецификации приведет к созданию JSON, который действителен в отношении ваших схем JSON?

Другими словами, здесь некоторые JSON из тела запроса или ответа правильны?

Swagger полагается на другой стандарт под названием JSON Schema для объектов схемы, которые фактически описывают JSON (а не конечные точки или метаданные). Swagger использует подмножество JSON Schema (отсутствует: oneOf, patternProperties и другие). С этой целью вы можете использовать валидатор JSON Schema. Есть 37, указанный здесь; Я дам крик этот онлайн-валидатор, который также поддерживает схемы YAML.

Но, когда я сказал, что Swagger полагается на подмножество API JSON, я соврал. Есть несколько фиксированных полей, которые имеют особое значение в Swagger, которые не являются частью JSON Schema. Один из них - discriminator, который используется для полиморфизма. Я не знаю валидатора Swagger, который может обрабатывать discriminator. Есть справедливое количество инструментов для чванства, и некоторые утверждают, что делают валидации, но многие из них являются отказавшимися, предназначенными для старых версий, а не полнофункциональными, привязаны к другим технологиям и т.д. Если есть зрелая и ухоженная библиотека, которую мне не хватает, я бы с удовольствием узнал.