骆驼http4生产者默认为POST?

时间:2020-01-24 12:09:18

标签: rest apache-camel

文档(2.x)列出了一个简单的示例,如下所示(顺便说一下POST):

from("direct:start")
 .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
 .to("http4://www.google.com")
 .to("mock:results");

根据该示例创建自己的简单路线时:

from("timer://test?fixedRate=true&period=1m")
  .routeId("test")
  .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.GET))
  .to("https4://somewhere/api/things/getthings")
  .to("mock:results");

然后似乎忽略了HTTP_METHOD设置,而是执行了POST:

....>>> (test) setHeader[CamelHttpMethod, GET] --> https4://somewhere/api/things/getthings <<< Pattern:InOnly
....Sending to endpoint: https4://somewhere/api/things/getthings is intercepted and detoured to: Pipeline[[Channel[SetHeader(CamelHttpMethod, POST)]
....>>> https4://somewhere/api/things/getthings --> setHeader[CamelHttpMethod, POST]
....Executing http POST method: https://somewhere/api/things/getthings

是因为文档中的“ Message Headers”部分未列出HTTP_METHOD?

哪个表示给出的示例不正确?

但是,“ Which HTTP method will be used”部分清楚地显示:

2. Use method provided in header (Exchange.HTTP_METHOD).

那么我的.setHeader(.... GET)中有错误吗?

-

我可以通过在URI中添加“ httpMethod”来使其工作:

.to("https4://somewhere/api/things/getthings?httpMethod=GET")

这不是我要解决的方法,因为我的URI以XML定义 例如

.to("somewhereGetThings")

可在不同的路由中重复使用,每个路由可能执行不同的HTTP方法...

-

如果我改用码头:

.to("jetty:https://webapi.netcare.co.za/api/MedicalAid/GetMedicalAids")

它将执行GET,而无需我完全设置setHeader()。

-

  1. 我想念什么?
  2. 我是否应该不使用“ http4”进行调用以从REST端点获取数据?

我在使用骆驼2.24.1

0 个答案:

没有答案