Потребитель API Camel Rest, использующий SpringOAuthResttemplate

Мне нужно вызвать пару веб-служб для отдыха из моего весеннего загрузочного приложения. Я планирую использовать Camel для настройки потока и других вариантов использования EIP. Некоторые конечные точки используют аутентификацию oAuth2. Я планирую использовать Spring oAuthResttempalte. Все примеры в Интернете используют либо restlet, CXF, либо camel-http.

Camel Rest Consmer

Я не могу найти ни одного примера только с spring resttemplate. Кто-нибудь реализовал потребителя Camel Rest с помощью Spring Resttemplate?

Некоторые из примеров в Интернете используют сервер причала для использования конечной точки отдыха. Зачем вам сервер причала для простого отдыха?


person Chandru    schedule 19.12.2017    source источник
comment
Если у вас есть копия книги Camel in Action 2nd ed, прочитайте главу REST, в которой рассказывается, как использовать Spring RestTemplate с Camel.   -  person Claus Ibsen    schedule 20.12.2017
comment
@ClausIbsen У меня есть книга. Думаю, вы имели в виду главу 7-Микросервисы RestTemplate используется для создания микросервиса. CamelRestConfiguration используется для потребления. Он не использует spring для отправки запроса в микросервис.   -  person Chandru    schedule 21.12.2017
comment
Вы можете использовать контроллер spring rest как есть, а затем внедрить шаблон производителя и т. д. и использовать его для вызова верблюжьих маршрутов, если это необходимо, тогда вам не нужно использовать rest-dsl, но вы можете использовать материал spring rest, если хотите   -  person Claus Ibsen    schedule 21.12.2017


Ответы (1)


Кто-нибудь реализовал потребителя Camel Rest с помощью Spring Resttemplate?

Я не знаю об этом и вряд ли найду что-то в этом направлении, потому что у Camel уже есть встроенные компоненты для использовать остальные конечные точки.

Некоторые из примеров в Интернете используют сервер причала для использования конечной точки отдыха. Зачем вам сервер причала для простого отдыха?

Я считаю, что пристань использовалась как конечная точка потребителя, а не производителя. Таким образом, вам не понадобится «сервер». Или, может быть, вы видели пример использования причала в качестве сервера для обслуживания конечной точки OAuth?

Если вы извините мой подход, я бы предложил остаться с возможностями Camel HTTP/Rest для использования REST API с использованием OAuth. Я нашел этот пример в Gist:

from("direct:authService").tracing()
    .setHeader(Exchange.HTTP_PATH)
        .simple("<auth service context>/oauth2/token")
    .setHeader("CamelHttpMethod")
        .simple("POST")
    .setHeader("Content-Type")
        .simple("application/x-www-form-urlencoded")
    .setHeader("Accept")
        .simple("application/json")
    .setBody()
        .constant("grant_type=client_credentials&client_id=<client id>&client_secret=<client sec>")
    .to("https4://<remote auth service url>")
        .convertBodyTo(String.class)
    .log("response from API: " + body())
    .choice()
        .when().simple("${header.CamelHttpResponseCode} == 200")
            .unmarshal().json(JsonLibrary.Jackson, AccessResponseToken.class)
            .setHeader("jwt").simple("${body.access_token}")
            .to("direct:<some direct route>")
        .otherwise()
    .log("Not Authenticated!!!");

Если вы хотите придерживаться OAuthRestTemplate, вы можете реализовать Processor или bean, чтобы обернуть эти вызовы и вернуть на ваш маршрут токен авторизации.

person Ricardo Zanini    schedule 19.12.2017
comment
Благодарю. Мне нужно использовать oAuthTemplate, потому что секрет моего клиента предварительно настроен/заполнен с использованием Springoauth. Сейчас я использую bean-компонент для вызова класса. Удивлен, узнав, что у верблюда нет поддержки весеннего шаблона отдыха. - person Chandru; 21.12.2017