Как я могу найти, если параметр URI существует в Mule?
Я хочу проверить, существует ли параметр URI в URL-адресе с помощью Mule 3.8.3, а также необходимо убедиться, что inboundProperties также не является пустым при использовании компонента Choice в Anypoint Studio 6.2 и Mule 3.8.3.
Я пытался:
#[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 ответ
Есть два "выражения" во вкусе.
1.Экспрессия-трансформер
Example : <expression-transformer expression="#[message.inboundProperties.'http.uri.params'.param != empty]" doc:name="Expression"/>
2.Экспресс-компонент
Example : <expression-component doc:name="Expression"/>
Убедитесь, что вы используетевыражение-преобразователь, как показано ниже
Попробуйте ниже поток в 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>
Проверьте выше с ниже URL в вашем браузере
HTTP: // локальный: 8082 / TestApi / URI / testUriParam / ресурс
Это также может быть использовано с компонентом Choice. Попробуйте код ниже:
<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>