Python JSONSchema是一种提示其模式的资源
我试图找到获取资源的最佳方法,以某种方式指示应该用于验证它的模式 我需要这个,因为可能有一天我需要返回一个充满不同资源的数组。在这种情况下,我需要数组中的每个资源告诉我应该用什么模式来验证它 最好的方法是什么 我的想法是使用嵌套的JSONSchema,其中外部对象具有资源的名称(例如car): 然后,我可以在资源中清楚地看到应该使用哪个模式进行验证:Python JSONSchema是一种提示其模式的资源,python,jsonschema,Python,Jsonschema,我试图找到获取资源的最佳方法,以某种方式指示应该用于验证它的模式 我需要这个,因为可能有一天我需要返回一个充满不同资源的数组。在这种情况下,我需要数组中的每个资源告诉我应该用什么模式来验证它 最好的方法是什么 我的想法是使用嵌套的JSONSchema,其中外部对象具有资源的名称(例如car): 然后,我可以在资源中清楚地看到应该使用哪个模式进行验证: { 'car': { 'id': 1, } } 然后,在需要返回不同资源数组的情况下,可以轻松地正确识别和验证每
{
'car': {
'id': 1,
}
}
然后,在需要返回不同资源数组的情况下,可以轻松地正确识别和验证每个资源:
{
'items': [
{
'car': {
'id': 1,
}
},
{
'helicopter': {
'id': 1,
}
},
]
}
在JSON模式中处理类似内容的方法是使用
anyOf
约束
{
"type": "array",
"items": {
"anyOf": [
{ "$ref": "car.json" },
{ "$ref": "helicopter.json" }
]
}
}
这样,客户机就不需要告诉您要使用什么模式,而是告诉客户机允许使用哪些模式。只要数组中的每个项都匹配一个可能的选项,验证就会成功
如果需要更具体地说明数组中的项,可以重新构造架构以隔离类型。为什么需要客户端验证它们?在服务器端验证它们,如果无法发送有效的对象,则会返回一个错误。问题是,如果服务器从客户端接收到对象数组,它如何知道要使用哪些架构来验证列表中的每个资源?这似乎是一个不错的解决方案,谢谢Jason。我会等一会儿再把这个标记为我的答案,以防另一个答案出现。
{
"type": "array",
"items": {
"anyOf": [
{ "$ref": "car.json" },
{ "$ref": "helicopter.json" }
]
}
}