HTTP-методи: пояснення
HTTP визначає дев’ять стандартних методів запиту, але в повсякденному трафіку використовуються лише деякі. Таблиця пояснює кожен метод, його безпечність та ідемпотентність, а також коди успішної відповіді.
| Метод | Призначення | Безпечний? | Ідемпотентний? | Статус успіху |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
Примітки
- Безпечний означає, що метод ніколи не змінює стан сервера: лише GET, HEAD, OPTIONS і TRACE є безпечними.
- Ідемпотентний означає, що повторний виклик дає той самий результат, що й один виклик: це стосується PUT, DELETE і GET, але не POST і PATCH.
- Якщо маршрут не підтримує метод, сервер відповідає 405 Method Not Allowed і зазвичай додає заголовок Allow.
Часті запитання
- У чому різниця між GET і POST?
- GET отримує ресурс без побічних ефектів і безпечний для повторення; параметри передаються в URL. POST створює щось або запускає дію, може змінювати стан і не повинен повторюватися бездумно.
- Що означає «безпечний» HTTP-метод?
- Безпечний метод ніколи не змінює стан сервера, тому його можна викликати без ризику. Безпечні GET, HEAD, OPTIONS і TRACE; POST, PUT, PATCH і DELETE — ні.
- У чому різниця між PUT і PATCH?
- PUT замінює весь ресурс тим, що ви надсилаєте; PATCH частково змінює лише вибрані поля. PUT ідемпотентний — повтор дає той самий результат; PATCH зазвичай ні.
- Що робить метод HEAD?
- HEAD поводиться як GET, але не повертає тіло відповіді. Він зручний для перевірки існування ресурсу, його розміру чи заголовків без завантаження всього вмісту.