我正在使用包express-jsonschema来验证请求的正文。
我的架构是:
{
type: 'object',
oneOf: [
{ $ref: "#/definitions/one" },
{ $ref: "#/definitions/two" },
{ $ref: "#/definitions/three" }
],
definitions: {
one: {
type: 'string'
},
two: {
type: 'string'
}
three: {
type: 'string'
}
}
我的要求是:
{
"one": "asdf"
}
我的请求结果是 BadRequest ,我已经阅读了这个示例Example JSON SCHEMA,但我的代码无效。 谢谢你的帮助。
答案 0 :(得分:1)
您的请求是具有属性的对象,而不是字符串。因此,每个定义(或至少是“one”的定义)类型应该是具有属性的对象,而不是字符串。
这是您的请求的有效架构,可能就是您要做的事情(没有足够的信息可以确定):
{
type: 'object',
oneOf: [
{ $ref: "#/definitions/one" },
{ $ref: "#/definitions/two" },
{ $ref: "#/definitions/three" }
],
definitions: {
one: {
type: 'object',
properties: {
one: {
required: true,
type: "string"
}
}
},
two: {
type: 'object',
properties: {
two: {
required: true,
type: "string"
}
}
},
three: {
type: 'object',
properties: {
three: {
required: true,
type: "string"
}
}
}
}
}