Верблюжий http4 производитель по умолчанию POST? - PullRequest
0 голосов
/ 24 января 2020

В документации ( 2.x ) приведен простой пример: (100% * 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

Может быть потому, что раздел " Заголовки сообщений " в документации делает НЕ перечислять HTTP_METHOD?

Что означает, что приведенный пример является неточным?

Тем не менее, в разделе " Какой метод HTTP будет использоваться " ясно показано:

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

Так есть ли ошибка в моем .setHeader (.... GET)?

-

Я могу заставить его работать, добавив httpMethod к URI:

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

Это не тот способ, которым я хочу решить проблему, потому что мои URI определены в XML например,

.to("somewhereGetThings")

для повторного использования на разных маршрутах, каждый из которых могут использоваться различные методы HTTP ...

-

Если вместо этого я использую причал:

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

, это сделает GET без m нам вообще нужно установить setHeader ().

-

  1. Чего мне не хватает?
  2. Должен ли я не использовать http4 для совершения звонков, чтобы получить данные с конечных точек REST?

Я на верблюде 2.24.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...