このツールについて
スキーマ検証は、「レスポンスは正しそうに見える」を、必須フィールド、型、フォーマット、enum、配列の形といった再現可能なコントラクトチェックに変えます。このバリデーターは多くの JavaScript テストスイートで使われている Ajv を使い、ajv-formats で email、date-time、uuid、uri をチェックします。エラーはインスタンスパス(/items/1/qty)とわかりやすいメッセージつきで、最初の 1 件だけでなくすべて表示されます。まだスキーマがない場合は、正しいとわかっているレスポンスを貼り付けてスキーマのひな形を生成し、手作業で厳密にしていきましょう。
使い方
- 左にスキーマ、右に JSON データを貼り付けるか、注文のサンプルスキーマと意図的に壊したデータを読み込みます。
- ドラフトを「Auto」(自動)のままにするとスキーマの $schema キーワードに従います。2020-12 や draft-07 を強制することもできます。
- 一覧のエラーを修正します。入力に合わせて結果が更新されます。
- 新しいスキーマを作るには、実際のレスポンスをデータとして貼り付け、「Generate schema from data」(データからスキーマを生成)をクリックします。
JSON Schema バリデーター のよくある質問
draft 2020-12 と draft-07 のどちらを使うべきですか?
ほかのツールが対応している方を使ってください。OpenAPI 3.1 は 2020-12 に準拠しており、多くの古いバリデーターや OpenAPI 3.0 のツールは draft-07 に近い仕様です。目に見える主な違いは、タプル配列(2020-12 では prefixItems、draft-07 では配列形式の items)と、$defs か definitions かという点です。
生成されたスキーマはどの程度使えますか?
1 つのサンプルから推測した出発点です。型、ネストしたオブジェクト、配列要素の形、よく使われる文字列フォーマットを含み、サンプルにあったキーはすべて必須として扱われます。どのフィールドが任意か、どの値が enum か、数値の上限下限などはわからないため、コントラクトとして使う前に必ず見直してください。
不正なメールアドレスが受け入れられるのはなぜですか?
「format」キーワードは、バリデーターがフォーマットチェックを有効にしている場合にのみ適用されます。このツールでは ajv-formats で有効にしていますが、お使いのテストフレームワークで有効になっていなければ、同じデータが通ってしまいます。そちらにも formats プラグインを追加してください。