← Назад к вопросам

Какие данные можно получить после вызова 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 запроса получаешь:

  1. Статус код (201, 200, 400 и т.д.)
  2. Заголовки (Content-Type, Location, Cache-Control)
  3. Тело ответа (созданный ресурс, ошибки, метаданные)
  4. Cookies и авторизационные данные (если нужны)

Правильная обработка этих данных — ключ к надежной работе с API.