web-dev-qa-db-ja.com

Swagger APIスキーマに対するJSONの検証

いくつかのJSONファイルからAPI仕様を作成し、ファイルがAPI仕様に対して検証されているかどうかをテストしようとしています。

JSONスキーマに対して検証するための優れたツールがいくつかありますが、Swagger(APIスキーマを作成するためのツール)で作成された仕様に対して検証するツールを見つける機会がありませんでした。私が見つけた唯一の解決策は、Swagger-Editorでクライアント/サーバーを生成することで、非常に面倒です。

Swagger Schemaに対してJSONを検証する既存のツールはすでにありますか?

39
Peter G.

コメントのArnaudは、ここに2つの質問があることを指摘しています。

仕様が有効なOpenAPI(fka。Swagger)仕様であることを検証しますか

あなたはできる

  • 仕様を オンラインSwaggerエディター にコピーすると、エラーがスローされます。 source をざっと見ても、これらのエラーを作成するために何を使用しているかはわかりませんが、それを行うためにサーバーに接続しているようには見えません...
  • Javaには公式の swagger-parser を使用します。
  • JavaScript(ブラウザまたはノード)には非公式の swagger-parser を使用します。

または、この仕様の実装がJSONスキーマに関して有効なJSONを生成することを検証しますか?

言い換えれば、リクエストまたはレスポンスの本文からのJSONがありますが、正しいですか?

Swaggerは、 スキーマオブジェクト のJSONスキーマと呼ばれる別の標準に依存しています。これは、エンドポイントやメタデータではなく、実際にJSONを記述するものです。 SwaggerはJSONスキーマのサブセットを使用します(欠落:oneOfpatternPropertiesなど)。そのために、JSON Schema Validatorを使用できます。 7がここにリストされています ; このオンラインバリデーター に叫び声を上げます。これはYAMLスキーマもサポートしています。

しかし、SwaggerがJSON APIのサブセットに依存していると言ったとき、私は嘘をつきました。 JSONスキーマの一部ではないSwaggerには、特別な意味を持つ少数の固定フィールドがあります。それらの1つはdiscriminatorで、これはポリモーフィズムに使用されます。 discriminatorを処理できるSwaggerバリデーターを知りません。 公正な数のツール がswaggerにあり、検証を行うと主張するものもありますが、多くは放棄バージョンであり、古いバージョン向けであり、機能が完全ではなく、他の技術に結びついています。不足している成熟したよく管理されたライブラリがある場合、知りたいです。

26
mgold

OpenAPI 2.0/Swaggerスキーマはいくつかの場所で利用できますが、swagger自体でWordの「スキーマ」を多用しているため、見つけるのが少し難しいです。

そのため、このスキーマとドキュメントに汎用バリデータを向けることができます。たとえば、vscodeとRed HatのYAML拡張機能を使用すると、これはうまく機能します。

1
Michael

Swagger JSONがホストされている場合、次のURLを使用できます。 http://online.swagger.io/validator/debug?url=your_url

1
josephpconley