Как кодировать параметры запроса Feign HTTP GET с помощью Jackson?

Я совсем новичок в Feign. Моя цель - использовать кодировщик/декодер Джексона через HTTP для связи между клиентами. Для этого я использовал следующую конфигурацию:

@Configuration
protected static class JacksonFeignConfiguration {
  @Bean
  public Decoder feignDecoder() {
    return new JacksonDecoder();
  }
  @Bean
  public Encoder feignEncoder() {
    return new JacksonEncoder();
  }

}

Хотя это, по-видимому, форматирует тело запросов, оно не форматирует параметры запроса (с использованием @RequestParam). Они неожиданно создаются с использованием метода toString(), который плохо отформатирован.

Как мне убедиться, что параметры запроса также отформатированы с использованием Jackson. Это важно, так как мне нужно включить список объектов критериев фильтрации в запросы GET.

В настоящее время я обошел это, изменив метод toString() объекта критериев фильтра, чтобы он возвращал строку JSON, и написав соответствующий преобразователь аргументов, который может декодировать эту строку.

Это единственный способ или его можно автоматизировать с помощью конфигурации?


person J Bevan    schedule 29.07.2018    source источник


Ответы (1)


Необходимо установить этот класс конфигурации в интерфейсе FeignClient.

@FeignClient(value = "client", configuration = JacksonFeignConfiguration.class)
public interface YourClient{
   //Your mappings
}
person GolamMazid Sajib    schedule 29.07.2018
comment
Я сделал это, однако параметры запроса в запросах GET не кодируются в JSON, а только в тело запроса/ответа. - person J Bevan; 29.07.2018