REST APIリクエストボディ用のJSON Schema生成
サンプルペイロードから REST API リクエストボディの完全なJSON Schemaを生成します。ネストされたオブジェクト、配列、enum、requiredフィールドのバリデーションを含みます。
Real-World Schemas
詳細な説明
サンプルデータからAPIリクエストスキーマを構築する
JSON Schema生成の最も実用的な用途の一つは、REST APIリクエストボディのバリデーションスキーマの作成です。ゼロからスキーマを書く代わりに、サンプルペイロードを貼り付けて出力を改善します。
サンプルAPIリクエスト
典型的なECサイトの注文作成エンドポイントを考えてみましょう:
{
"customerId": "cust_abc123",
"items": [
{
"productId": "prod_001",
"quantity": 2,
"price": 29.99
}
],
"shipping": {
"method": "express",
"address": {
"street": "123 Main St",
"city": "Portland",
"state": "OR",
"zip": "97201"
}
},
"couponCode": null
}
生成後の改善ステップ
- 予期しないフィールドを拒否するために
additionalProperties: falseを追加。 requiredを確認:couponCodeはnullableなのでオプショナルにすべき。- 制約を追加: items配列に
minItems: 1、priceとquantityにminimum: 0。 shipping.methodにenumを追加:["standard", "express", "overnight"]。- IDフィールドに
patternを追加して命名規則を強制。
APIフレームワークとの統合
スキーマが準備できたら、以下に直接プラグインできます:
- Express.js: Ajvミドルウェアで受信リクエストボディを検証。
- FastAPI: Pydanticモデルに変換して自動バリデーション。
- OpenAPI/Swagger: API仕様にスキーマを埋め込んでドキュメントとクライアントコード生成。
生成してから改善するワークフローは、特にネストされたオブジェクトと配列を持つ大きなペイロードの場合、手作業でスキーマを書くよりも大幅に高速です。
ユースケース
注文作成、ユーザー登録、検索クエリ、または構造化されたJSONボディを受け入れるPOST/PUTエンドポイントのREST APIリクエストバリデーション用のスキーマを生成します。