В чем разница между методами HTTP запросов?
DOM и браузер
Методы HTTP-запросов различаются назначением, идемпотентностью, безопасностью и тем, где передаются данные. Главные — GET, POST, PUT, PATCH, DELETE.
Различия по назначению
- GET — получить данные.
- POST — создать ресурс/выполнить операцию.
- PUT — заменить ресурс целиком.
- PATCH — обновить часть ресурса.
- DELETE — удалить ресурс.
Различия по свойствам
- GET — Данные: в URL; Идемпотентен: да; Безопасен: да; Кешируется: да
- POST — Данные: в теле; Идемпотентен: нет; Безопасен: нет; Кешируется: нет
- PUT — Данные: в теле; Идемпотентен: да; Безопасен: нет; Кешируется: нет
- PATCH — Данные: в теле; Идемпотентен: обычно нет; Безопасен: нет; Кешируется: нет
- DELETE — Идемпотентен: да; Безопасен: нет; Кешируется: нет
- Идемпотентность — повтор запроса даёт тот же результат (важно для retry).
- Безопасность — не меняет состояние сервера (GET).
GET против POST (частый вопрос)
- GET: данные в URL, кешируется, идемпотентен, для чтения.
- POST: данные в теле, не кешируется, не идемпотентен, для создания/изменения.
PUT против PATCH
- PUT заменяет ресурс целиком (нужны все поля), идемпотентен.
- PATCH меняет отдельные поля.
Коротко для собеседования
Методы различаются назначением (GET читать, POST создать, PUT заменить, PATCH обновить часть, DELETE удалить), идемпотентностью (GET/PUT/DELETE — да, POST — нет), безопасностью (только GET) и местом данных (GET — URL, остальные — тело). PUT заменяет целиком, PATCH — частично.