Ответ
Да, выполнял. Выбор инструмента зависит от контекста: стандартный HttpClient (Java 11+), библиотеки вроде OkHttp или абстракции Spring.
1. Стандартный HttpClient (Java 11+):
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/users/1"))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());
2. Spring WebClient (реактивный стиль):
WebClient client = WebClient.create("https://api.example.com");
User user = client.get()
.uri("/users/{id}", 1)
.retrieve()
.bodyToMono(User.class)
.block();
3. POST-запрос с телом (JSON):
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/users"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(
"{"name":"John"}"
))
.build();
Важные аспекты:
- Таймауты: Всегда настраивайте
connectTimeoutиreadTimeout. - Обработка ошибок: Проверяйте HTTP-статусы (не только 200), используйте механизмы retry и circuit breaker (например, Resilience4j).
- Сериализация: Используйте Jackson или Gson для преобразования объектов в JSON и обратно.