Основні методи HTTP
Ідемпотентність
Властивість об'єкта або операції при повторному застосуванні операції до об'єкта давати той самий результат, як і за першому. Приклади:
- додавання з нулем:
a=a+0=(a+0)+0=((a+0)+0)+0=...
- множення на одиницю:
x = x*1 = (x*1)*1 = ((x*1)*1)*1 = ...
;
З точки зору служби RESTful, щоб операція була ідемпотентна, клієнти можуть здійснювати один і той же виклик кілька разів, здійснюючи той самий результат, працюючи як "сеттер" метод мовою програмування. Іншими словами, створення кількох однакових запитів має той самий ефект як і відправка одного запиту. Хоча ідемпотентні операції роблять один і той же результат на сервері, сама відповідь може відрізнятися тобто стан ресурсу може змінитися між запитами.
Основні або найчастіше використовувані HTTP-методи GET/POST/PUT/DELETE
GET
запитує уявлення ресурсу. Запити з використанням цього методу можуть лише витягувати дані.POST
використовується для надсилання сутностей до певного ресурсу. Викликає зміну стану та побічні ефекти на сервері, оскільки найчастіше створює новий ресурс за надісланим уявленнямPUT
замінює ресурс поточним поданням запитуDELETE
видаляє вказаний ресурс.PATCH
використовується для часткової зміни ресурсу
HTTP метод GET
Використовується для отримання (або читання) представлення ресурсу. В разі
успішної адреси, метод GET
повертається представлення ресурсу у форматі XML
або JSON
у поєднанні з кодом стану HTTP 200 (OK)
. У разі невдачі
повертається код 404 (NOT FOUND)
або 400 (BAD REQUEST)
. Є безпечним
(Ідемопотентним) методом. Це означає, що він призначений лише для отримання
інформації та не повинен змінювати стан сервера або мати побічні ефекти.
HTTP метод POST
Запит часто використовується для створення нових ресурсів. На практиці він
також використовується для створення вкладених ресурсів. При створенні нового ресурсу,
POST
запит надсилає уявлення, а сервіс бере на себе відповідальність
призначення нового ресурсу ID тощо. За успішного створення ресурсу
повертається HTTP
код 201 Create
, а також може бути встановлений заголовок
Location
з адресою створеного ресурсу. Метод POST
не є безпечним або
ідемпотентним запитом оскільки відбувається побічний ефект - створення ресурсу.
HTTP метод PUT (PATCH)
Зазвичай використовується оновлення ресурсу. Тіло запиту під час відправлення
PUT
-запит до існуючого ресурсу URL повинен містити оновлені дані
оригінального ресурсу (повністю, або лише оновлювану частину - PATCH
). При
успішному оновленні повертається код 200
(або 204
якщо не був переданий будь-який
контент у тілі відповіді). Метод PUT
вважається небезпечною операцією, так
як у процесі виконання відбувається модифікація (або створення) екземплярів
ресурсу на стороні сервера, але це метод ідемпотентен. Іншими словами,
створення або оновлення ресурсу за допомогою надсилання PUT
запиту - ресурс не
зникне, розташовуватиметься там же, де і був
HTTP метод DELETE
Використовується для видалення ресурсу, ідентифікованого конкретним URL (ID). При
успішному видаленні ресурсу повертається код 200 (OK) HTTP
, спільно з тілом
відповіді, що містить дані віддаленого ресурсу. Також можливе використання
HTTP
коду 204 (NO CONTENT)
без тіла відповіді. Відповідно до специфікації HTTP
,
метод DELETE
ідемпотентний. Якщо ви виконуєте DELETE
запит до ресурсу, він
видаляється. Повторний DELETE
запит до ресурсу закінчиться також: ресурс видалено.
Коди відповіді HTTP
Як видно, будь-яка відповідь від сервера має вказувати код стану HTTP. Він показує, чи успішно виконано певний HTTP запит. Коди поділяються на п'ять груп:
- Інформаційні 100 - 199
100: Continue
- Успішні 200 - 299
200: OK
201: Created
202: Accepted
204: No Content
- Перенаправлення 300 - 399
301: Moved Permanently
307: Temporary Redirect
- Клієнтські помилки 400 - 499
400: Bad Request
401: Unauthorized
403: Forbidden
404: Not Found
- Серверні помилки 500 - 599
500: Internal Server Error
501: Not Implemented
502: Bad Gateway
503: Service Unavailable
504: Gateway Timeout