主机http:请求配置中的Mule参数工作不正常
我试图创建一个入站端点来使用RESTAPI,如果我不添加过滤器参数,它就可以工作,但是当我添加过滤器参数时,它就不工作了主机http:请求配置中的Mule参数工作不正常,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,我试图创建一个入站端点来使用RESTAPI,如果我不添加过滤器参数,它就可以工作,但是当我添加过滤器参数时,它就不工作了 <http:request-config name="HTTP_Request_Configuration" host="mywebsite.org/api/countries?display=[name,id]&filter[name]=#[message.inboundProperties.'http.query.string']" port="4
<http:request-config name="HTTP_Request_Configuration" host="mywebsite.org/api/countries?display=[name,id]&filter[name]=#[message.inboundProperties.'http.query.string']" port="433" doc:name="HTTP Request Configuration" >
<http:basic-authentication username="user" password="123"/>
</http:request-config>
<flow name="CountryByValue">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8080" path=countryByValue" doc:name="HTTP"/>
<logger level="INFO" message="#[message.payloadAs(java.lang.String)]" doc:name="Logger"/>
<logger level="INFO" message="#[message.inboundProperties.'http.query.string']" doc:name="Logger"/>
<logger level="INFO" doc:name="Logger"/>
<http:request config-ref="HTTP_Request_Configuration" path="/" method="GET" doc:name="REST API">
</http:request>
<logger level="INFO" message="#[message.payloadAs(java.lang.String)]" doc:name="Logger"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
但最终它并没有给我正确的答案:
<api xmlns:xlink="http://www.w3.org/1999/xlink">
<countries>
</countries>
</api>
如果我使用链接直接在浏览器中执行此操作,它将起作用:
mywebsite.org/api/countries?display=[name,id]&filter[name]=加拿大
我明白了:
<api xmlns:xlink="http://www.w3.org/1999/xlink">
<countries>
<country>
<id>
<![CDATA[ 4 ]]>
</id>
<name>
<language id="2" xlink:href="sdfg">
<![CDATA[ Canada ]]>
</language>
<language id="3" xlink:href="sdfg">
<![CDATA[ Canada ]]>
</language>
</name>
</country>
</countries>
</api>
问题似乎出在主机中。但我似乎不能让它工作
谢谢。您应该在request元素中添加这些查询参数,而不是在request配置中 它应该是这样的:
<http:request-config name="HTTP_Request_Configuration" host="mywebsite.org" basePath="api" port="443" protocol="HTTPS" doc:name="HTTP Request Configuration" >
<http:basic-authentication username="user" password="123"/>
</http:request-config>
...
<http:request config-ref="HTTP_Request_Configuration" path="/countries" method="GET" doc:name="REST API">
<http:request-builder>
<http:query-param paramName="display" value="[name,id]" />
<http:query-param paramName="filter[name]" value="#[message.inboundProperties.'http.query.string']" />
</http:request-builder>
</http:request>
...
我使主机在api处结束,然后在请求中将其余部分设置为路径,因为这样更易于重用
希望能有所帮助。您好,谢谢您抽出时间来帮助我。奇怪的是,我现在从api方面得到了一个错误:
code
“>code
是否有办法记录我的传出完整URL,以查看它是否与浏览器中的内容完全相同?看看错误是否不在api方面?我认为这将出现在mule的未来版本中。不过,您可以使用wireshark之类的东西来嗅探网络上的请求。您好,我已经能够在api端显示错误,但问题似乎来自Mule…下面是错误
显然Mule发送的是http://mywebsite.org/api/:433
因为当我在浏览器中输入此内容时同样的错误。它似乎只添加了我设置的端口,如果我删除它,它会给出与80相同的错误。有什么想法吗?我也试着把端口放在http:request
中,但我得到了同样的错误。
<http:request-config name="HTTP_Request_Configuration" host="mywebsite.org" basePath="api" port="443" protocol="HTTPS" doc:name="HTTP Request Configuration" >
<http:basic-authentication username="user" password="123"/>
</http:request-config>
...
<http:request config-ref="HTTP_Request_Configuration" path="/countries" method="GET" doc:name="REST API">
<http:request-builder>
<http:query-param paramName="display" value="[name,id]" />
<http:query-param paramName="filter[name]" value="#[message.inboundProperties.'http.query.string']" />
</http:request-builder>
</http:request>