Является ли HTTP код 204 показателем успешности выполнения запроса

Ответ

Да, HTTP-код 204 No Content означает успешное выполнение запроса, но сервер не возвращает никакого содержимого в ответе. Это часто используется в API для операций, где не требуется передача данных (например, удаление ресурса или обновление без возврата объекта).

Пример с Retrofit:

@DELETE("/users/{id}")
suspend fun deleteUser(@Path("id") userId: String): Response<Unit>

Если сервер вернет 204, клиент понимает, что операция прошла успешно, но тело ответа пустое.

Ответ 18+ 🔞

Ага, вот смотри, тут простая штука, но многих вводит в ступор. Код 204 No Content — это типа как ты попросил друга принести пива, а он приходит и говорит: «Всё, сделано». Но бутылок в руках нет, просто констатация факта. Сервер говорит: «Запрос твой, чувак, обработал, всё окей, но тебе на ответ нихуя не нужно, так что вот пустой ответ, разбирайся».

Вот реальный пример из Retrofit, чтобы совсем понятно было:

@DELETE("/users/{id}")
suspend fun deleteUser(@Path("id") userId: String): Response<Unit>

Представь: ты шлёшь этот запрос, чтобы удалить юзера. Сервер его удаляет и в ответ шлёт просто статус 204. Тела ответа нет, пустота. И это нормально! Это и есть «No Content» — контента нет, но работа сделана. Клиент видит этот код и понимает: «А, ну окей, юзера больше нет, можно жить дальше». Если бы сервер попытался что-то впихнуть в тело при таком коде — это была бы уже пиздопроебибна и нарушение протокола.

Главное не путать с тем же 200 OK, где тело ответа ожидается. Тут же — тишина, только статус. Удобно для операций, где возвращать нечего, только факт успеха. Ёпта, логично же.