【发布时间】:2019-04-16 09:34:18
【问题描述】:
我想使用单个 JSON 模式在我的应用程序中创建和更新(修补)记录。问题发生在required 属性上,我不知道如何更改以进行修补。我应该允许部分更新记录。
我只能想到 2 种解决方案,但这些对我来说都不是很好。我相信一定有更好的方法。
解决方案 1:
即时修改架构以进行修补。基本上是导入架构,删除required属性或修改它,然后使用该架构进行验证。
解决方案 2: 在补丁请求中,获取现有条目,并应用来自请求的数据。
这是一个示例 json 架构:
{
"$id": "https://myapp.com/schemas/post.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Post",
"description": "Blog post",
"properties": {
"title": {
"type": "string",
"description": "Post title"
},
"body": {
"type": "string",
"description": "Post content"
}
},
"required": ["title", "body"]
}
最初,在创建帖子时,我需要这两个属性。后来,我想只允许更改一个条目。所以客户端只能发送到 REST API body,我应该能够根据架构正确验证它。
【问题讨论】:
-
你能区分创建帖子和稍后在 JSON 数据中更新它吗?如果是这样,您可以使用 Draft-7 中的 if-then-else。
-
@tomredfern 你误解了这个问题。 OP 并没有以与链接问题相同的方式询问有条件地要求属性。
标签: json jsonschema json-schema-validator