json 架构中应包含项目的哪些属性?
What properties of an item should be included in the json schema?
我对在我的 json 模式中定义属性的情况感到困惑。
假设我有一个项目 product
,我正在尝试为其定义架构。在我的数据库中,products
table 有 id
、brand_id
、name
、item_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"
]
}
您应该只在 JSON 架构中定义由 API 的用户处理的属性。
在您的情况下,在定义 POST 正文实体的架构中使用 id
和 brand_id
是没有意义的,以创建新的 product
因为这些值不是由 API 用户提供的。
这就是说,如果可以公开显示这两个字段,您可能对存在这两个字段的现有 product
实体有另一个架构。
如果是这样,为此您可以使用模式联合机制并让 "existing product" 模式使用 allOf
new_product.json
并添加 id
和 brand_id
给它。
我对在我的 json 模式中定义属性的情况感到困惑。
假设我有一个项目 product
,我正在尝试为其定义架构。在我的数据库中,products
table 有 id
、brand_id
、name
、item_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"
]
}
您应该只在 JSON 架构中定义由 API 的用户处理的属性。
在您的情况下,在定义 POST 正文实体的架构中使用 id
和 brand_id
是没有意义的,以创建新的 product
因为这些值不是由 API 用户提供的。
这就是说,如果可以公开显示这两个字段,您可能对存在这两个字段的现有 product
实体有另一个架构。
如果是这样,为此您可以使用模式联合机制并让 "existing product" 模式使用 allOf
new_product.json
并添加 id
和 brand_id
给它。