如何在Mule中找到URI参数?

时间:2017-10-24 13:25:07

标签: mule uri anypoint-studio mel

我想使用Mule 3.8.3检查URL中是否存在URI参数,并且还需要确保在Anypoint Studio 6.2和Mule 3.8.3中使用Choice组件时inboundProperties不为空。

我试过了:

#[message.inboundProperties.'http.uri.params'.code != empty]

#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.uri.params'.code)]

对于我得到的两个

  

org.mule.api.expression.ExpressionRuntimeException:执行   表达   “org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.code)”   失败。

还有其他方法可以尝试吗?

1 个答案:

答案 0 :(得分:2)

有两个" Expression"口感。

1的表达变压器

Example : <expression-transformer expression="#[message.inboundProperties.'http.uri.params'.param != empty]" doc:name="Expression"/>

2的表达组分

Example : <expression-component doc:name="Expression"/>

确保使用&#34; Expression-transformer &#34;如下图所示

在Anypoint Studio中尝试以下流程。它对我有用。

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8082" basePath="/testapi" doc:name="HTTP Listener Configuration"/>
<flow name="uri">
    <http:listener path="uri/{param}/resource" config-ref="HTTP_Listener_Configuration" doc:name="HTTP"/>
    <expression-transformer expression="#[message.inboundProperties.'http.uri.params'.param != empty]" doc:name="Expression"/>
        <object-to-string-transformer doc:name="Object to String"/>
        <set-payload value="#[payload]" doc:name="Set Payload"/>
</flow>

在浏览器中使用以下网址测试以上内容

http://localhost:8082/testapi/uri/testUriParam/resource

这也可以与选择组件组件一起使用。 请尝试以下代码:

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8082" basePath="/testapi" doc:name="HTTP Listener Configuration"/>
<flow name="uri">
    <http:listener path="uri/{param}/resource" config-ref="HTTP_Listener_Configuration" doc:name="HTTP"/>
           <choice doc:name="Choice">
            <when expression="#[message.inboundProperties.'http.uri.params'.param != empty]">
                <logger message="Found URI Param" level="INFO" doc:name="Logger"/>
                <set-payload value="Found URI Param" doc:name="Set Payload"/>
            </when>
            <otherwise>
                <logger level="INFO" doc:name="Logger" message="URI Param not found"/>
                <set-payload value="URI Param not found" doc:name="Set Payload"/>
            </otherwise>
        </choice>
</flow>