Wso2 如果请求主体中不存在属性,是否有方法为属性中介设置默认值?

Wso2 如果请求主体中不存在属性,是否有方法为属性中介设置默认值?,wso2,wso2esb,wso2ei,synapse,Wso2,Wso2esb,Wso2ei,Synapse,我正在WSO2 EI/ESB中构建一个简单的API。我正在将每个请求参数保存到如下属性: <property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING"/> 我想知道的是,在属性中介中保存此表达式时,是否有方法设置默认值?例如: 或类似的东西 我知道我可以实现过滤器来检查字段是否存在并验证它,但我发现这可能会变得有点混乱。我认为没有办法做到这一点。你必须使用过滤

我正在WSO2 EI/ESB中构建一个简单的API。我正在将每个请求参数保存到如下属性:

<property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING"/>
我想知道的是,在属性中介中保存此表达式时,是否有方法设置默认值?例如:
或类似的东西


我知道我可以实现过滤器来检查字段是否存在并验证它,但我发现这可能会变得有点混乱。

我认为没有办法做到这一点。你必须使用过滤器

不,您不能使用payloadFactory。您必须从不同的解决方案中进行选择:

  • 用更加灵活的XSLT转换替换payloadFactory(最佳解决方案)
  • 添加过滤器以生成参数并设置默认值
  • 使用脚本中介来替换痛苦的过滤器,并能够轻松地管理if/then/else语句。然后可以从脚本中介器初始化属性
    • 条件xpath? 这可能有用。玩弄下面的代码

      <enrich>
          <source clone="true" type="custom" xpath="0"  />
          <target action="replace" type="custom" xpath="" property="boolean(string-length(//client_id) != 0)" />
      </enrich>
      

      谢谢!是的,我有点怀疑是否有办法做到这一点,只是觉得我应该问问社区。我将介绍如何使用XSLT转换或脚本中介,谢谢您的建议。
      {
                          "req_type": "1",
                          "client_id:
      }
      
      <enrich>
          <source clone="true" type="custom" xpath="0"  />
          <target action="replace" type="custom" xpath="" property="boolean(string-length(//client_id) != 0)" />
      </enrich>