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

Можно ли получить данные из DELETE-запроса?

1.8 Middle🔥 111 комментариев
#Работа с сетью

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Получение данных из DELETE-запроса

Да, абсолютно можно получить данные из DELETE-запроса в HTTP и, соответственно, в Flutter-приложении при общении с REST API. Это полностью зависит от того, как сервер спроектирован и как обрабатывает DELETE-запросы.

Как работает DELETE-запрос

DELETE — это HTTP-метод, который по соглашению используется для удаления ресурсов. Однако само соглашение REST не запрещает серверу возвращать данные в теле ответа. Поэтому сервер может:

  1. Вернуть статус 204 No Content (без тела ответа)
  2. Вернуть статус 200 OK с JSON-телом, содержащим удаленные данные
  3. Вернуть статус 200 OK с сообщением об успехе

Примеры в Flutter

Вот как получить данные из DELETE-запроса с использованием пакета http:

Future<void> deleteUser(String userId) async {
  final response = await http.delete(
    Uri.parse("https://api.example.com/users/$userId"),
    headers: {"Content-Type": "application/json"},
  );

  if (response.statusCode == 200) {
    final data = jsonDecode(response.body);
    print("Удален пользователь: ${data["name"]}");
  } else if (response.statusCode == 204) {
    print("Пользователь удален успешно");
  } else {
    throw Exception("Ошибка удаления");
  }
}

Для типизированного подхода:

Future<DeletedUser> deleteUser(String userId) async {
  final response = await http.delete(
    Uri.parse("https://api.example.com/users/$userId"),
  );

  if (response.statusCode == 200) {
    return DeletedUser.fromJson(jsonDecode(response.body));
  } else {
    throw Exception("Ошибка: ${response.statusCode}");
  }
}

class DeletedUser {
  final String id;
  final String name;

  DeletedUser({required this.id, required this.name});

  factory DeletedUser.fromJson(Map<String, dynamic> json) {
    return DeletedUser(
      id: json["id"],
      name: json["name"],
    );
  }
}

С использованием Dio

Если используешь пакет Dio:

final response = await dio.delete(
  "/users/$userId",
  options: Options(contentType: Headers.jsonContentType),
);

if (response.statusCode == 200) {
  final deletedUser = DeletedUser.fromJson(response.data);
  print("Удален: ${deletedUser.name}");
}

Практические сценарии

1. Мягкое удаление (soft delete) — сервер отмечает запись как удаленную и может возвращать её состояние.

2. Отмена операции — приложение сохраняет возвращённые данные для отмены (undo).

3. Аудит — сервер логирует удаление и возвращает информацию для истории.

Важные моменты

  • 204 No Content vs 200 OK: если сервер возвращает 204, body будет пусто
  • Стандарты RESTful API: обычно DELETE без тела считается правильнее, но возврат данных не запрещен
  • Обработка ошибок: DELETE может вернуть 404, 403 и другие ошибки

Итого: да, можно получить данные из DELETE-запроса, если сервер это поддерживает.