Spring Traverson и OAuth2RestTemplate - PullRequest
       66

Spring Traverson и OAuth2RestTemplate

0 голосов
/ 11 октября 2019

У меня есть OAuth2RestTemplate для обработки связи с REST-API, и я просто пытался использовать его в сочетании с Traverson, например так:

@Bean
public Traverson traverson( final OAuth2RestTemplate restTemplate ) {
   try {
      final Traverson traverson = new Traverson( new URI( this.baseUrl ), MediaType.APPLICATION_JSON );
      traverson.setRestOperations( restTemplate );
      return traverson;
   }
   catch ( final URISyntaxException e ) {
      throw new BeanCreationException( e );
   }
}

При попытке использовать traverson теперь шаблон довольно хорошо обрабатывает танец OAuth2, извлекая токен и все - но заголовок Authorization: Bearer ..., к сожалению, не будет отправлен traverson.

Так что, когда я сейчас вызываю конечную точкуНапример, traverson.follow( "xyz" )... результатом является только форма входа провайдера REST API: - (

Мой вопрос: я что-то упустил или мой подход "OAuth2RestTemplate with Traverson" просто не поддерживается или traversonпредназначен для использования таким образом?

Любая помощь приветствуется! В настоящее время я бы сказал, что это просто невозможно, но большую часть времени в этом "Весеннем мире" есть способы чтобы сделать это - возможно, один из вас знает, как!

1 Ответ

0 голосов
/ 28 октября 2019

Я думаю, вам нужно установить конвертеры сообщений HAL, предопределенные в Traverson.

restTemplate.setMessageConverters(Traverson.getDefaultMessageConverters(mediaTypes));

В моем случае я использовал расширение Traverson для успешного использования OAuth2 RestTemplate.

public class ExtendedTraverson extends Traverson {

  public ExtendedTraverson(URI baseUri, RestTemplate restTemplate, List<MediaType> mediaTypes) {
    super(baseUri, mediaTypes);
    restTemplate.setMessageConverters(getDefaultMessageConverters(mediaTypes));
    setRestOperations(restTemplate);
  }

}
...