← Назад к вопросам
Какие данные можно получить после вызова POST
1.0 Junior🔥 151 комментариев
#REST API и микросервисы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Данные после вызова POST запроса
POST — HTTP-метод для отправки данных на сервер и получения ответа. После выполнения POST запроса клиент получает различные данные в зависимости от реализации и контекста.
1. Основные компоненты ответа
Статус код (HTTP Status Code)
Первое, что получает клиент — код состояния HTTP:
HttpResponse<String> response = httpClient.send(request,
HttpResponse.BodyHandlers.ofString());
int statusCode = response.statusCode();
// Типичные коды после POST:
// 201 Created — ресурс успешно создан
// 200 OK — успешно обработано
// 202 Accepted — принято, обработка асинхронная
// 400 Bad Request — ошибка в данных
// 401 Unauthorized — нужна авторизация
// 409 Conflict — конфликт данных
// 500 Internal Server Error — ошибка сервера
Заголовки ответа (Response Headers)
Сервер возвращает метаинформацию в заголовках:
HttpHeaders headers = response.headers();
// Важные заголовки после POST:
String contentType = headers.firstValue("Content-Type").orElse(null);
// "application/json", "application/xml", "text/plain"
String location = headers.firstValue("Location").orElse(null);
// URL созданного ресурса (при 201 Created)
String contentLength = headers.firstValue("Content-Length").orElse(null);
// Размер тела ответа
String cacheControl = headers.firstValue("Cache-Control").orElse(null);
Тело ответа (Response Body)
Основные данные, которые返った сервер:
String body = response.body();
// JSON: {"id": 123, "name": "John", "status": "active"}
// XML: <user><id>123</id><name>John</name></user>
// HTML: <html>...</html>
// Text: Plain text
2. Типичные данные в теле ответа
Успешное создание ресурса (201 Created)
// Запрос
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/users"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(
"{\"name\":\"John\",\"email\":\"john@example.com\"}"))
.build();
// Ответ содержит:
// {
// "id": 42,
// "name": "John",
// "email": "john@example.com",
// "createdAt": "2025-03-22T10:30:00Z",
// "_links": {
// "self": "/users/42"
// }
// }
Ошибка валидации (400 Bad Request)
// {
// "error": "Validation failed",
// "details": [
// {"field": "email", "message": "Invalid email format"},
// {"field": "name", "message": "Name is required"}
// ]
// }
3. Обработка ответа в Java
@PostMapping("/users")
public ResponseEntity<?> createUser(@RequestBody UserRequest request) {
User createdUser = userService.create(request);
// Возвращаем созданный ресурс с кодом 201
return ResponseEntity
.created(URI.create("/users/" + createdUser.getId()))
.body(createdUser);
}
// Со стороны клиента:
try {
HttpResponse<String> response = httpClient.send(request,
HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 201) {
// Парсим JSON
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(response.body(), User.class);
System.out.println("Created user: " + user.getId());
} else {
System.out.println("Error: " + response.statusCode());
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
4. Дополнительные данные
Cookies и токены
HttpHeaders headers = response.headers();
List<String> cookies = headers.allValues("Set-Cookie");
// ["sessionId=abc123; Path=/; HttpOnly"]
Метаданные операции
// {
// "timestamp": "2025-03-22T10:30:00Z",
// "requestId": "req-12345",
// "version": "v1",
// "executionTime": "45ms"
// }
Итог
После POST запроса получаешь:
- Статус код (201, 200, 400 и т.д.)
- Заголовки (Content-Type, Location, Cache-Control)
- Тело ответа (созданный ресурс, ошибки, метаданные)
- Cookies и авторизационные данные (если нужны)
Правильная обработка этих данных — ключ к надежной работе с API.