带有'oneOf'的JSON SCHEMA中的Badrequest

时间:2017-02-22 17:56:27

标签: json express jsonschema

我正在使用包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,但我的代码无效。 谢谢你的帮助。

1 个答案:

答案 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"
         }
       }
    }
  }
}