mule - ESB 中有效负载的验证

标签 mule esb anypoint-studio dataweave

我有一个 HTTP POST REQUEST,它发送如下有效负载:

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

我能够验证所有值,但每次都必须使用一个组件。 在本例中,我使用了验证器“非空字符串”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 获取了 key 集 enter image description here

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

最佳答案

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

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

这是针对我的流程使用不同 json 输入的一些响应

  1. enter image description here

  2. enter image description here

  3. enter image description here

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

更新:这是 mule 流的 xml 内容

<flow name="stackoverflowFlow1" 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>

关于mule - ESB 中有效负载的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318278/

相关文章:

Java内存分配DXX和XX的区别

soap - 如何在 mule 中从 JSON 负载创建 SOAP 消息

java - 使用 Java 调试 Mule 子流

java - Apache Camel 中按时间顺序排列两个来源的消息

java - OpenESB 电子邮件 BC SMTP 端口配置

mule - 是否有社区版的Anypoint Studio for Mule?

html - 如何在 lotus notes 8.5 中发送 html 电子邮件

soap - WSO2 ESB 将命名空间添加到 SOAP 信封

mule - 通过java代码设置全局属性