ESB 中有效负载的验证

Validation of Payload in ESB

我有一个 HTTP POST REQUEST 发送有效载荷如下:

{ "key1" : "value1", "key2" : "value2" ,"key3": "value3" }

我能够验证所有值,但我每次都必须使用一个组件。 在这种情况下,我使用了验证器 "Not a blank string" 3 次。

1. Is there any way that I can validate all the three values in a single validator ? 
 2. Should I use Scatter-Gather for validating all the values in parallel(according to best-practices) ?
 3. How can I validate the key set(the key set should only contain "key1", "key2" and "key3"  ?

更新: 我已经使用连接器 setVariable 获取了密钥集

编辑: JSON验证器可以从交易所下载。搜索 JSON 模块

我做了一个小样本来演示 json 验证器是如何工作的。你可以使用相同的

  1. 转到 https://jsonschema.net/ 或任何在线 json 模式生成器并为您的 json 文件生成 json 模式。
  2. 将此模式与扩展名为 .json 的文件相同,并将其放在 src/main/resources 文件夹中。
  3. 实施架构验证并引用您的架构,您的传入 json 将根据架构自动进行验证,因此您不必使用任何分散-收集或每个单独的键值对验证。

这里有一些针对我的流量

的不同 json 输入的响应

您可以随时增强架构以满足您的需求。您可以为每个键定义数据类型。可以说 key3 应该只包含数值,key2 应该是一个数组。任何类似的事情都可以通过修改您的模式来实现,验证器将相应地验证传入的 json。

update:这里是mule flowxml的内容

<flow name="WhosebugFlow1" doc:id="c24d34aa-ce1d-4bbb-b3fd-d73007dad60b" >
        <http:listener doc:name="Listener" doc:id="80ab5db5-1d3e-409f-9990-cebf1fc07dd5" config-ref="HTTP_Listener_config" path="/valid"/>
        <json:validate-schema doc:name="Validate schema" doc:id="0a51cde0-5175-4f11-b972-3d5d708094c6" schema="schema.json"/>
        <logger level="INFO" doc:name="Logger" doc:id="2d95a6f0-8f88-4608-bdb8-7fae8abc0e6d" message="valid json"/>
    </flow>