Mule esb:验证.raml文件中的数组项

时间:2015-03-17 17:05:19

标签: mule esb mule-studio raml

我的.raml文件中有以下json架构定义

- request: |
   {
 "type": "object",
 "$schema": "http://json-schema.org/draft-03/schema",
 "id": "http://jsonschema.net",
 "required": true,
 "properties": {
     "personProperty": {
         "type": "array",
         "items": {                 
                 "$ref": "property"                 
         }
     }
 }
   }
- property: |
   {   "$schema": "http://json-schema.org/draft-03/schema",
       "type": "object",
       "description": "A single person property",
       "properties": {
           "fieldId":  { "type": "integer", "required": true},
           "systemId": { "type": "integer", "required": false},
           "value":    { "type": "string" , "required": true },
           "created":  { "type": "string" , "required": false }
        }
   }

当数组中的一个必需字段丢失时,我需要mule ESB来拒绝输入。

例如,这应该被拒绝400- BAD REQUEST:

 {
"personProperty": [
    {
        "fieldId": "1",
        "systemId": 1,
        "created": "2015-02-23 21:19:00.907"
    }
]
}

如果架构不在数组中,则验证正常。 但是当在数组内部时,它不会验证具有所需属性的任何单个项目。

我需要特殊配置吗?

感谢。

2 个答案:

答案 0 :(得分:0)

经过一段时间的努力,我能够使用它来实现它的工作:

 - request: |
{
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema",
"id": "http://jsonschema.net",
"definitions": {
    "person-property": {
        "type": "object",
        "properties": {
            "fieldId": {
                "type": "integer",
                "required": true
            },
            "systemId": {
                "type": "integer",
                "required": false
            },
            "value": {
                "type": "string",
                "required": true
            },
            "created": {
                "type": "string",
                "required": false
            }
        }
    }
},
"properties": {
    "personProperty": {
        "type": "array",
        "items": {
            "$ref": "#/definitions/person-property"
        }
    }
}
}

我使用了内部定义,然后使用" $ ref":"#/ definitions / person-property"

答案 1 :(得分:0)

你还没有回答我的问题所以我只能假设你错误地包含了内部对象定义。看到你自己的答案和对挣扎的提及,我也想提出一个答案。

以下是架构的独立且无参考表示形式:

{
    "type": "object",
    "$schema": "http://json-schema.org/draft-03/schema",
    "properties": {
        "personProperty": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "fieldId": {
                        "type": "integer",
                        "required": true
                    },
                    "systemId": {
                        "type": "integer",
                        "required": false
                    },
                    "value": {
                        "type": "string",
                        "required": true
                    },
                    "created": {
                        "type": "string",
                        "required": false
                    }
                }
            }
        }
    }
}