0

JSONスキーマでプロパティを定義している状況について混乱しています。

productスキーマを定義しようとしている項目があるとします。私のデータベースでは、productsテーブルにはidbrand_idnameitem_numberおよびがありdescriptionます。以外descriptionはすべて必須フィールドです。はidデータベースによってbrand_id自動生成され、ユーザーの作成に基づいて API によって自動的に作成時に設定されます。

これはPOST /api/products、次のデータのみを使用できることを意味します。

{
  "product": {
    "name": "Product Name",
    "item_number": "item001"
  }
}

しかし、製品スキーマをどのように定義すればよいでしょうか? プロパティidとを含める必要がありbrand_idますか? もしそうなら、それらは自動的に設定されますが、必須としてラベル付けする必要がありますか?

これは私が思いついたものです:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "http://jsonschema.net/products",
  "type": "object",
  "properties": {
    "item_number": {
      "id": "http://jsonschema.net/products/item_number",
      "type": "string"
    },
    "name": {
      "id": "http://jsonschema.net/products/name",
      "type": "string"
    },
    "description": {
      "id": "http://jsonschema.net/products/description",
      "type": "string",
      "default": "null"
    }
  },
  "required": [
    "item_number",
    "name"
  ]
}
4

1 に答える 1

2

API のユーザーによって処理される JSON スキーマ プロパティのみを定義する必要があります。

あなたの場合、これらの値は API ユーザーによって提供されないため、新しい作成のために POST 本文エンティティを定義するスキーマにidandを含めることは意味がありません。brand_idproduct

productこれは、これらの 2 つのフィールドが存在する既存のエンティティに対して、それらを公開しても問題ない場合は別のスキーマを持っている可能性があることを示しています。

その場合は、スキーマ ユニオン メカニズムを使用して、「既存の製品」スキーマを使用しallOf new_product.jsonて追加することができます。idbrand_id

于 2015-05-04T02:32:54.513 に答える