2

現在、Schema定義はまったく文書化されていません。私が見つけた唯一のリソースは次のとおりです。

http://support.apiary.io/knowledgebase/articles/147279-json-schema-validation https://github.com/apiaryio/api-blueprint/issues/112

ただし、これらの例のいずれも、ネストされたスキーマの作成方法について説明していません。

この応答を検証したいと思います。

{
    date: (datetime),
    url: (url),
    changes: [
        {
            date: (datetime),
            url: (url)
        },
        ...
    ],
    items: [
        {
            name: (string),
            url: (url)
        },
        ...
    ]
}

私の現在の知識に基づいて、次のようなスキーマの作成を開始しました

{
    "type": "object",
    "required": true,
    "properties": {
        "date": {
            "type": "datetime",
            "required": true
        },
        "url": {
            "type": "string",
            "required": true
        },
        "changes": {
            "type": "array",
            "required": true
        },
        "items": {
            "type": "array",
            "required": true
        }
    }
}

しかし、ネストされたitemandのスキーマを作成する方法はchange?

どのタイプを使用できますか?

検証する方法はdatetime?期待値はYYYY-MM-DD HH:MM:SS

4

2 に答える 2

0

テスト応答は、例に基づく次の JSON スニペットです。配列には 2 つのオブジェクトが含まれているため、テストしたい変更がより簡単になります。

{
  "date": "2015-02-05T00:00:00.000Z",
  "url": "mysite.com",
  "changes": [
    {
      "date": "2015-03-05T00:00:00.000Z",
      "url": "mysite.com/edit/1"
    },
    {
      "date": "2015-03-04T00:00:00.000Z",
      "url": "mysite.com/edit/4"
    }
  ],
  "items": [
    {
      "name": "Item One",
      "url": "mysite.com/items/1"
    },
    {
      "name": "Item Two",
      "url": "mysite.com/items/2"
    }
  ]
}

次のスキーマは、draft-04 仕様を使用して上記の JSON を検証します。

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Nested Example",
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "format": "date-time"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": ["date", "url"]
      }
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": ["name", "url"]
      }
    }
  },
  "required": ["date", "url", "changes", "items"]
}

次のタイプがあります。

  • 配列
  • ブール値
  • 整数
  • 番号
  • ヌル
  • 物体
  • ストリング

プリミティブ型


検証


これをローカルで行うためのツールとワークフローを調査する時間がなかったので、これを検証に使用しています。

于 2015-03-05T22:33:10.810 に答える
0

これまでのところ、私はこれをやってしまいました。APIエンドポイントが起動して機能するようになったら、まだテストする必要があります

{
    "type": "object",
    "required": true,
    "properties": {
        "date": {
            "type": "string",
            "format": "date-time",
            "required": true
        },
        "url": {
            "type": "string",
            "format": "url",
            "required": true
        },
        "changes": {
            "type": "array",
            "required": true,
            "items": {
                "type": "object",
                "required": true,
                "properties": {
                    "date": {
                        "type": "string",
                        "format": "date-time",
                        "required": true
                    },
                    "url": {
                        "type": "string",
                        "format": "url",
                        "required": true
                    }
                }
            }
        },
        "items": {
            "type": "array",
            "required": true,
            "items": {
                "type": "object",
                "required": true,
                "properties": {
                    "name": {
                        "type": "string",
                        "required": true
                    },
                    "url": {
                        "type": "string",
                        "format": "url",
                        "required": true
                    }
                }
            }
        }
    }
}
于 2015-01-29T19:22:17.020 に答える