Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url 如果查询参数不可用,Mule Throw错误_Url_Mule - Fatal编程技术网

Url 如果查询参数不可用,Mule Throw错误

Url 如果查询参数不可用,Mule Throw错误,url,mule,Url,Mule,如果查询参数say requestId在请求URL中不存在,我需要抛出一个异常 URL如下所示:my.server.com?requestId=123&age=26 在这里,我将requestId记录在message属性中,如下所示: <message-properties-transformer scope="session" doc:name="Adding requestId"> <add-message-property key="requestId" valu

如果查询参数say requestId在请求URL中不存在,我需要抛出一个异常

URL如下所示:my.server.com?requestId=123&age=26

在这里,我将requestId记录在message属性中,如下所示:

<message-properties-transformer scope="session" doc:name="Adding requestId">
    <add-message-property key="requestId" value="#[message.inboundProperties.'http.query.params'.requestId]"/>
</message-properties-transformer>
如果URL不包含requestId,则它将为空。但在本例中,我想检查requestId是否存在。
然后使用下面的表达式检查HTTP URL中的查询参数可用性

#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]
请参阅下面使用choice router的示例代码,它根据查询参数的可用性路由控件

 <choice doc:name="Choice">
        <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]">
            <logger message="Query param available in request level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <logger message="Query param not available in request level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>

使用下面的表达式检查HTTP URL中的查询参数可用性

#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]
请参阅下面使用choice router的示例代码,它根据查询参数的可用性路由控件

 <choice doc:name="Choice">
        <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]">
            <logger message="Query param available in request level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <logger message="Query param not available in request level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>

根据您的要求,您可以执行以下操作:-

<choice doc:name="Choice">
            <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]">
                <logger message="query parameter exist" level="INFO" doc:name="Logger"/>

            </when>
            <otherwise>
                <logger message="query parameter does not exist" level="INFO" doc:name="Logger"/>
                <!-- Throw your exception here -->
                <scripting:component doc:name="Script">
                  <scripting:script engine="Groovy"><![CDATA[
                       throw new IllegalArgumentException('query parameter does not exist')
                   ]]></scripting:script>
                </scripting:component>
            </otherwise>
        </choice>

此处,如果查询参数存在,它将简单地登录到记录器,如果查询参数不存在,它将抛出您想要的异常。

根据您的要求,您可以执行以下操作:-

<choice doc:name="Choice">
            <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]">
                <logger message="query parameter exist" level="INFO" doc:name="Logger"/>

            </when>
            <otherwise>
                <logger message="query parameter does not exist" level="INFO" doc:name="Logger"/>
                <!-- Throw your exception here -->
                <scripting:component doc:name="Script">
                  <scripting:script engine="Groovy"><![CDATA[
                       throw new IllegalArgumentException('query parameter does not exist')
                   ]]></scripting:script>
                </scripting:component>
            </otherwise>
        </choice>

这里,如果查询参数存在,它将简单地登录到记录器,如果查询参数不存在,它将抛出您想要的异常。

您尝试过消息过滤器吗

    <message-filter throwOnUnaccepted="true">
        <expression-filter
            expression="#[message.inboundProperties.'http.query.params'.requestId != empty]" />
    </message-filter>
当requestId为null、false、empty、zero或空集合时,这将引发FilterUnacceptedException

如果过滤器需要接受零,则必须更改条件


你试过邮件过滤器吗

    <message-filter throwOnUnaccepted="true">
        <expression-filter
            expression="#[message.inboundProperties.'http.query.params'.requestId != empty]" />
    </message-filter>
当requestId为null、false、empty、zero或空集合时,这将引发FilterUnacceptedException

如果过滤器需要接受零,则必须更改条件


谢谢大家把你的想法。最后,我得到了一个使用groovy的简单方法,我不需要放置任何选择路由器或任何表达式过滤器。他是我的密码:

if(!message.getInboundProperty("http.query.params").find{ it.key == "requestId" }){
    throw new IllegalArgumentException('requestId does not exist');
}

谢谢大家把你的想法。最后,我得到了一个使用groovy的简单方法,我不需要放置任何选择路由器或任何表达式过滤器。他是我的密码:

if(!message.getInboundProperty("http.query.params").find{ it.key == "requestId" }){
    throw new IllegalArgumentException('requestId does not exist');
}

如果查询参数退出并且没有如下值http://localhost:8081/test?requestId=&age=26 然后,记录器将在请求级别打印可用的查询参数,即使该值不在请求级别,我同意您的意见。但问题在于检查HTTP URL中是否存在查询参数。但您建议的方法更可靠,因为它可以检查两种情况。i、 e空查询参数和该查询参数的空值。我将更新我的答案。如果查询参数退出并且没有如下值http://localhost:8081/test?requestId=&age=26 然后,记录器将在请求级别打印可用的查询参数,即使该值不在请求级别,我同意您的意见。但问题在于检查HTTP URL中是否存在查询参数。但您建议的方法更可靠,因为它可以检查两种情况。i、 e空查询参数和该查询参数的空值。我将更新我的答案。你可以使用null safe你可以使用null safe