Ответ
Основные HTTP-методы, которые я использую при работе с RESTful API в Flutter-приложениях:
| Метод | Назначение (Семантика) | Идемпотентность* | Безопасность** |
|---|---|---|---|
GET |
Получение данных с сервера. Не должен изменять состояние. | Да | Да |
POST |
Создание нового ресурса. Часто используется для отправки данных (форм, JSON). | Нет | Нет |
PUT |
Полное обновление (замену) ресурса по указанному URI. Если ресурса нет — может создавать. | Да | Нет |
PATCH |
Частичное обновление ресурса. | Нет | Нет |
DELETE |
Удаление ресурса по указанному URI. | Да | Нет |
Идемпотентность: Повторный идентичный запрос дает тот же результат, что и первый. *Безопасность: Метод не изменяет состояние сервера.
Примеры на Dart с package:http:
import 'package:http/http.dart' as http;
// GET запрос
var getResponse = await http.get(Uri.https('api.example.com', '/users/1'));
// POST запрос с телом в формате JSON
var postResponse = await http.post(
Uri.https('api.example.com', '/users'),
headers: {'Content-Type': 'application/json'},
body: '{"name": "John", "job": "Developer"}',
);
// PUT запрос
var putResponse = await http.put(
Uri.https('api.example.com', '/users/1'),
body: {'name': 'Jane'},
);
// DELETE запрос
var deleteResponse = await http.delete(Uri.https('api.example.com', '/users/1'));
Понимание семантики методов важно для корректного проектирования взаимодействия с бэкендом и предсказуемого поведения приложения (например, кэширование для GET).