AJV - 复杂模式的验证
AJV - Validation of complex schema
我正在使用 AJV 作为 API 输入的模式验证器。
我需要验证我是否收到了这种格式的数据:
floors: [
{
name: "Floor 1",
rooms: [
{
name: "Room 1"
},
... more rooms
]
},
... more floors
]
基本上是Array of Objects
,那些Object也有Array of Objects
。每层有一个或多个房间。
是否可以使用 AJV 使用干净的 JSON 架构验证此数据,或者我是否需要为 AJV 编写一些自定义 keyword/validator?
我尝试这样做,但我最终还是这样做了,但它似乎不起作用:
floors: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
},
rooms: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
}
},
required: ["name"]
}
},
required: ["name", "rooms"]
}
我想我自己找到了解决方案:
floors: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
},
rooms: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
}
},
required: ["name"],
additionalProperties: false,
},
}
},
required: ["name", "rooms"],
additionalProperties: false,
}
}
如果它有一些安全漏洞,你可以在其中泄露一些无效的东西,请纠正我:)
我正在使用 AJV 作为 API 输入的模式验证器。
我需要验证我是否收到了这种格式的数据:
floors: [
{
name: "Floor 1",
rooms: [
{
name: "Room 1"
},
... more rooms
]
},
... more floors
]
基本上是Array of Objects
,那些Object也有Array of Objects
。每层有一个或多个房间。
是否可以使用 AJV 使用干净的 JSON 架构验证此数据,或者我是否需要为 AJV 编写一些自定义 keyword/validator?
我尝试这样做,但我最终还是这样做了,但它似乎不起作用:
floors: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
},
rooms: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
}
},
required: ["name"]
}
},
required: ["name", "rooms"]
}
我想我自己找到了解决方案:
floors: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
},
rooms: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
}
},
required: ["name"],
additionalProperties: false,
},
}
},
required: ["name", "rooms"],
additionalProperties: false,
}
}
如果它有一些安全漏洞,你可以在其中泄露一些无效的东西,请纠正我:)