Ответ
PATCH — это HTTP-метод для частичного обновления ресурса на сервере. В отличие от PUT, который заменяет ресурс целиком, PATCH отправляет только изменяемые поля.
Типичный сценарий во Flutter: обновление профиля пользователя, где меняется только имя или аватар.
Пример выполнения с пакетом http:
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<void> updateUserProfile(int userId, String newName) async {
final url = Uri.parse('https://api.example.com/users/$userId');
final headers = {'Content-Type': 'application/json'};
final body = jsonEncode({'name': newName}); // Отправляем только поле name
final response = await http.patch(url, headers: headers, body: body);
if (response.statusCode == 200) {
print('Профиль успешно обновлён');
} else {
throw Exception('Ошибка обновления: ${response.statusCode}');
}
}
Пример с более популярным пакетом dio:
import 'package:dio/dio.dart';
Future<void> updateUserWithDio(int userId, Map<String, dynamic> patchData) async {
final dio = Dio();
final response = await dio.patch(
'https://api.example.com/users/$userId',
data: patchData, // Например: {'email': 'new@email.com', 'settings': {'theme': 'dark'}}
);
print('Данные обновлены: ${response.data}');
}
Ключевые моменты:
- Сервер должен поддерживать логику обработки частичных обновлений.
- Успешные коды ответа:
200 (OK)с телом или204 (No Content). - Всегда обрабатывайте возможные ошибки сети и статусы
4xx/5xx.