Что такое PUT-запрос в HTTP?

«Что такое PUT-запрос в HTTP?» — вопрос из категории Сети, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PUT — это идемпотентный HTTP-метод для полного обновления ресурса по указанному URI. Если ресурс существует, он заменяется; если нет — может быть создан (хотя это зависит от реализации API).

Ключевые характеристики:

  • Идемпотентность: Многократные одинаковые запросы дают тот же результат, что и один.
  • Полная замена: Обычно требует отправки полного представления ресурса, а не частичных данных.
  • Предсказуемый URI: URI обычно содержит идентификатор обновляемого ресурса (например, /users/123).

Пример на Dart с пакетом http:

import 'package:http/http.dart' as http;
import 'dart:convert';

Future<void> updateUserProfile(String userId, Map<String, dynamic> userData) async {
  final response = await http.put(
    Uri.parse('https://api.example.com/users/$userId'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode(userData),
  );

  if (response.statusCode == 200) {
    print('Профиль успешно обновлен');
  } else if (response.statusCode == 201) {
    print('Ресурс создан');
  } else {
    throw Exception('Ошибка обновления: ${response.statusCode}');
  }
}

Типичные коды ответа:

  • 200 OK — успешное обновление
  • 201 Created — ресурс создан
  • 204 No Content — успешно, но без тела в ответе
  • 404 Not Found — ресурс для обновления не существует (если API не поддерживает создание через PUT)