web-dev-qa-db-fra.com

Validation de JSON par rapport au schéma de l'API Swagger

J'ai créé une spécification d'API à partir de certains fichiers JSON et j'essaie de vérifier si les fichiers sont validés par rapport à la spécification d'API. 

Il existe de bons outils pour valider par rapport au schéma JSON, mais je n’ai pas eu la chance de trouver un outil pour valider par rapport aux spécifications créées dans Swagger (outil de création de schéma API). La seule solution que j'ai trouvée consiste à générer un client/serveur dans Swagger-Editor, ce qui est assez fastidieux.

Existe-t-il déjà un outil permettant de valider JSON par rapport au schéma Swagger?

25
Peter Gerhat

Arnaud dans les commentaires a raison de dire qu'il y a deux questions distinctes ici.

Voulez-vous valider que votre spécification est une spécification OpenAPI (fka. Swagger) valide

Vous pouvez

  • Copiez vos spécifications dans la éditeur Swagger en ligne et des erreurs seront renvoyées. Une plongée rapide à travers la source ne me dit pas ce qu'il utilise pour créer ces erreurs, mais cela ne semble pas contacter un serveur pour le faire ...
  • Utilisez le swagger-parser officiel pour Java.
  • Utilisez le swagger-parser non officiel pour JavaScript (navigateur ou nœud).

ou valider qu'une implémentation de cette spécification produirait du JSON valable pour vos schémas JSON?

En d'autres termes, voici quelques JSON provenant d'un corps de requête ou de réponse, est-il correct?

Swagger s'appuie sur un autre standard appelé Schéma JSON pour ses objets de schéma , qui décrivent réellement le JSON (plutôt que les points de terminaison ou les métadonnées). Swagger utilise un sous-ensemble de schémas JSON (manquant: oneOf, patternProperties, entre autres). À cette fin, vous pouvez utiliser un validateur de schéma JSON. Il y a 37 répertoriés ici ; Je vais crier à ce validateur en ligne qui prend également en charge les schémas YAML.

Mais lorsque j'ai dit que Swagger s'appuyait sur un sous-ensemble d'API JSON, j'ai menti. Quelques champs fixes ayant une signification particulière dans Swagger ne font pas partie du schéma JSON. L'un d'eux est discriminator qui est utilisé pour le polymorphisme. Je ne connais pas de validateur Swagger capable de traiter discriminator. Il y a un bon nombre d'outils pour swagger et certains prétendent effectuer des validations, mais beaucoup sont des abandonwares, destinés aux anciennes versions, non complets, liés à d'autres technologies, etc. S'il me manque une bibliothèque mature et bien entretenue, j'aimerais le savoir.

19
mgold

Si votre JSON Swagger est hébergé, vous pouvez utiliser l'URL suivante: http://online.swagger.io/validator/debug?url=your_url

1
josephpconley

Le schéma OpenAPI 2.0/Swagger est disponible à quelques endroits. C'est un peu difficile à trouver en raison de l'utilisation intensive du «schéma» de Word dans swagger lui-même.

Vous pouvez donc indiquer un validateur générique à ce schéma et à votre document. Par exemple, cela fonctionne bien pour moi avec vscode et l’extension YAML de Red Hat.

0
Michael