0

我对在我的 json 模式中定义属性的哪种情况感到困惑。

假设我有一个product我正在尝试为其定义模式的项目。在我的数据库中,该表products具有idbrand_id、和。除必填字段外的所有字段。由数据库自动生成,并在创建时由 api 根据用户创建自动设置。nameitem_numberdescriptiondescriptionidbrand_id

这意味着我只能POST /api/products使用以下数据:

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

但是,我现在应该如何定义产品架构?我应该包括属性idbrand_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

您应该只在您的 JSON 模式属性中定义由 API 用户处理的属性。

在您的情况下,在定义 POST 主体实体以创建新实体的模式中拥有id和是没有意义的,因为这些值不是由 API 用户提供的。brand_idproduct

product这就是说,如果可以公开公开它们,您可能对存在这两个字段的现有实体有另一个模式。

如果是这种情况,您可以使用模式联合机制并让“现有产品”模式使用并allOf new_product.json添加到它。idbrand_id

于 2015-05-04T02:32:54.513 回答