Ответ
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)