Apache Camel Rest отправьте ответ на почтовый запрос - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть конечная точка верблюда, где другое приложение отправляет почтовый запрос с некоторыми данными (может быть, с другим маршрутом)

Я хочу обработать эти данные и вернуть что-то обратно в приложение с ответом POSTrequest.

Вот как выглядит мой Camel Context на данный момент:

 <camelContext xmlns="http://camel.apache.org/schema/blueprint">

    <restConfiguration component="restlet" bindingMode="json" port="8989" enableCORS="true"/>

    <rest path="/finData">
      <description>User rest service</description>
      <post>
        <to uri="direct:update"/>
      </post>
    </rest>

    <route id="sendFinData">
      <from uri="direct:update"/>
      <log message="Got some data:  ${body}"/>
      <to uri="aclient://otherClient"/>
    </route>

  </camelContext>

Как я могу отправить ответ обратно с маршрута sendFinData через ответ на запрос post?

1 Ответ

2 голосов
/ 12 декабря 2019

Ответ, который получает запрос post на ваш маршрут, - это то, что находится в вашем $ {body} в конце маршрута.

Таким образом, в конце вашего маршрута $ {body} содержит любой ответ от

<to uri="aclient://otherClient"/>

Я не использую Camel XML, но в Java вы должны сделать:

    rest("/finData")
        .get()
        .route()
        .to("direct:sendFindData")
        .end();

    from("direct:sendFindData")
        .to("aclient://otherClient")
        .process(exchange -> exchange.getIn().setBody("Hello world"))
        .setBody(simple("GoodBye world")) // same thing as line above
        .end();

Если данные, которые вы хотите передать обратно запрашивающей стороне, не являются ответом последнейВызов API в вашем маршруте, вам нужно временно его где-то сохранить (exchange.properties) и позже установить обратно в тело или объединить ответы, чтобы исходные данные не перезаписывались. Маршрут должен давать данные, которые ожидает потребитель. Для обычных запросов отдыха это должен быть тип String (например, «GoodBye world»). Если вы хотите вернуть JSON, например, убедитесь, что тело ответа представляет собой строку JSON в конце маршрута.

Извините, что я не могу помочь с XML, но надеюсь, что это поможетвы.

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