Sobes.tech
Back to questions
Senior
4

Какие параметры конфигурации передаём в HTTP-клиент (RestTemplate/WebClient/Feign) для вызова стороннего сервиса?

Companies where asked
МВидео/эльдорадо

Answer from AI

sobes.tech AI

При вызове стороннего сервиса через HTTP-клиенты (RestTemplate, WebClient, Feign) обычно настраивают следующие параметры:

  • URL и путь запроса — адрес вызываемого сервиса.
  • HTTP метод — GET, POST, PUT, DELETE и т.д.
  • Заголовки (Headers) — например, Authorization для токенов, Content-Type, Accept.
  • Тело запроса (Body) — для POST/PUT запросов, сериализованное в JSON, XML и т.п.
  • Параметры запроса (Query Params) — для GET запросов.
  • Таймауты — время ожидания подключения и ответа, чтобы избежать зависаний.
  • Обработка ошибок и повторные попытки (retry) — политика на случай сбоев.
  • Кодировка и сериализация/десериализация — настройка форматов данных.

Пример настройки RestTemplate с таймаутами и заголовками:

HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer token");
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);

RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory() {{
    setConnectTimeout(5000);
    setReadTimeout(5000);
}});

ResponseEntity<String> response = restTemplate.exchange(
    "https://api.example.com/resource",
    HttpMethod.POST,
    entity,
    String.class
);

Для WebClient и Feign аналогично настраиваются таймауты, заголовки и сериализация.