Ответ
При успешной обработке запроса сервер возвращает статус-код из класса 2xx (Success). Конкретный код зависит от типа операции и соглашений API:
200 OK— самый распространенный ответ. Запрос успешно обработан, и тело ответа содержит запрошенные данные (например, результат GET-запроса или результат выполнения операции).-
201 Created— указывает, что новый ресурс был успешно создан в результате запроса (обычно POST). В заголовкеLocationдолжен быть указан URI созданного ресурса.// Пример ответа в Symfony контроллере после создания пользователя public function createUser(Request $request): JsonResponse { $user = new User($request->get('email')); $this->entityManager->persist($user); $this->entityManager->flush(); return $this->json( ['id' => $user->getId(), 'email' => $user->getEmail()], Response::HTTP_CREATED, // 201 ['Location' => '/api/users/' . $user->getId()] ); } 204 No Content— сервер успешно выполнил запрос, но не возвращает никакого содержимого в теле ответа. Часто используется для операций DELETE или PUT, когда нужно просто подтвердить успех.202 Accepted— запрос принят на обработку, но она еще не завершена (асинхронные задачи).206 Partial Content— сервер возвращает только часть данных (используется для докачки файлов).
Проверка успешного ответа в PHP (с использованием Guzzle HTTP Client):
$client = new GuzzleHttpClient();
$response = $client->post('https://api.example.com/items', [
'json' => ['name' => 'New Item']
]);
$statusCode = $response->getStatusCode();
if ($statusCode >= 200 && $statusCode < 300) {
// Запрос успешен
$body = json_decode($response->getBody(), true);
echo 'Создан элемент с ID: ' . $body['id'];
// Можно проверить конкретный код
if ($statusCode === 201) {
$newItemUrl = $response->getHeaderLine('Location');
echo ' Новый ресурс по адресу: ' . $newItemUrl;
}
} else {
// Обработка ошибки
throw new Exception('Запрос не удался: ' . $statusCode);
}
Выбор конкретного кода — важная часть дизайна RESTful API, так как он помогает клиенту понять результат операции без необходимости парсинга тела ответа.