Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое PUT-запрос?
PUT-запрос — это один из HTTP-методов, используемых для обновления существующих ресурсов на сервере. Это фундаментальный инструмент при работе с REST API, который каждый разработчик должен понимать.
Основные характеристики PUT
PUT отправляет данные на сервер для полного обновления ресурса. Ключевые особенности:
- Полное обновление — заменяет весь ресурс целиком (не частичное обновление)
- Требует ID — необходимо знать идентификатор обновляемого ресурса
- Идемпотентность — повторный вызов с теми же данными дает тот же результат
- Требует полное тело — должны быть переданы все поля ресурса
Отличие PUT от PATCH
Часто разработчики путают PUT и PATCH:
- PUT: полное обновление (заменить весь объект)
- PATCH: частичное обновление (изменить только нужные поля)
Оригинальный объект:
{"id": 1, "name": "John", "age": 30}
PUT (полное обновление):
{"id": 1, "name": "Jane", "age": 25}
Результат: {"id": 1, "name": "Jane", "age": 25}
PATCH (частичное обновление):
{"name": "Jane"}
Результат: {"id": 1, "name": "Jane", "age": 30}
Пример в Flutter
При работе с HTTP в Flutter используется пакет http или dio:
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<void> updateUser(int userId, Map<String, dynamic> userData) async {
final uri = Uri.parse('https://api.example.com/users/$userId');
final response = await http.put(
uri,
headers: {'Content-Type': 'application/json'},
body: jsonEncode(userData),
);
if (response.statusCode == 200) {
print('Пользователь обновлен');
} else {
print('Ошибка: ${response.statusCode}');
}
}
await updateUser(1, {
'name': 'John Doe',
'email': 'john@example.com',
'age': 30,
});
Вариант с Dio
Dio — более мощная библиотека для HTTP-запросов:
final dio = Dio();
Future<void> updateUserWithDio(int userId, Map<String, dynamic> userData) async {
try {
final response = await dio.put(
'https://api.example.com/users/$userId',
data: userData,
options: Options(contentType: Headers.jsonContentType),
);
if (response.statusCode == 200) {
print('Успешно обновлено: ${response.data}');
}
} on DioException catch (e) {
print('Ошибка PUT: ${e.message}');
}
}
Когда использовать PUT
- Обновление профиля пользователя целиком
- Замена конфигурации
- Полное обновление данных сущности
Статус-коды для PUT
- 200 OK — успешное обновление, ресурс возвращается
- 204 No Content — успешное обновление без тела ответа
- 400 Bad Request — ошибочные данные
- 404 Not Found — ресурс не найден
- 409 Conflict — конфликт при обновлении
Понимание PUT-запросов критично при разработке мобильных приложений, так как это основной способ синхронизации данных с бэкендом.