PUT проти POST – різниця між ними

Ключові відмінності між PUT і POST

  • Метод PUT викликається, коли вам потрібно змінити один ресурс, а метод POST — коли вам потрібно додати дочірній ресурс.
  • Відповіді методу POST можна кешувати, але ви не можете кешувати відповіді методу PUT.
  • Ви можете використовувати запит UPDATE у PUT, тоді як ви можете використовувати запит create у POST.
  • У методі PUT клієнт вирішує, який ресурс URI повинен мати, а в методі POST сервер вирішує, який ресурс URI повинен мати.
  • PUT працює як конкретний, тоді як POST працює як абстрактний.
  • Якщо ви надішлете той самий запит PUT кілька разів, результат залишиться незмінним, але якщо ви надішлете той самий запит POST кілька разів, ви отримаєте різні результати.
  • Метод PUT є ідемпотентним, тоді як метод POST не є ідемпотентним.
PUT проти POST
PUT проти POST

Що таке метод PUT?

Метод PUT використовується для оновлення ресурсу, доступного на сервері. Як правило, він замінює все, що існує в цільовій URL-адресі, чимось іншим. Ви можете використовувати його, щоб створити новий ресурс або перезаписати існуючий. PUT запитує, що вкладена сутність має зберігатися під наданим запитуваним URI (уніфікований ідентифікатор ресурсу).

Що таке метод POST?

POST — це метод, який підтримується HTTP і

зображує, що веб-сервер приймає дані, включені в тіло повідомлення, яке запитується. POST часто використовується World Wide Web для надсилання створених користувачем даних на веб-сервер або під час завантаження файлу.

Відмінності між PUT і POST в REST API

Ось важлива відмінність між методами PUT і POST:

PUT POST
Цей спосіб ідемпотентний. Цей метод не є ідемпотентним.
Метод PUT викликається, коли вам потрібно змінити один ресурс, який уже є частиною колекції ресурсів. Метод POST викликається, коли вам потрібно додати дочірній ресурс у колекцію ресурсів.
RFC-2616 показує, що метод PUT надсилає запит на закриту сутність, яка зберігається в наданому URI запиту. Цей метод просить сервер прийняти сутність, яка міститься в запиті.
Синтаксис методу PUT: PUT /questions/{question-id} Синтаксис методу POST: POST /питання
Ви не можете кешувати відповіді методу PUT. Відповідь методу POST можна кешувати.
PUT /vi/juice/orders/1234 вказує на те, що ви оновлюєте ресурс, який ідентифікується як «1234». POST /vi/juice/orders вказує на те, що ви створюєте новий ресурс, і повертає ідентифікатор для опису ресурсу.
Якщо ви відправите один і той же запит кілька разів, результат залишиться незмінним. Якщо ви надішлете той самий запит POST більше одного разу, ви отримаєте різні результати.
PUT працює як специфічний. Робота POST як реферат.
Ми використовуємо запит UPDATE у PUT. Ми використовуємо запит на створення в POST.
У методі PUT клієнт вирішує, який ресурс URI повинен мати. У методі POST сервер вирішує, який ресурс URI повинен мати.

Приклад PUT

Ось приклад методу PUT на веб-сервері:

HTTP PUT http://www.google.com/users/234

HTTP PUT http://www.google.com/users/234/accounts/567

Запит

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 20

<p>New File</p>

Відповіді

Якщо цільовий ресурс має поточне представлення та змінено станом вкладеного представлення, тоді сервер повинен надіслати дві відповіді. Перший код відповіді – 200 (ОК), а другий код відповіді – 204 (Немає вмісту).

Якщо цільовий ресурс не має представлення, тоді сервер повинен повідомити користувача, надіславши відповідь з кодом 201 (Створено).

 HTTP/1.1 201 Created
Content-Location: /new.html

Приклад POST

Ось приклад методу POST:

HTTP POST http://www.google.com/users

HTTP POST http://www.google.com/users/234/accounts

Форма, що використовує стандартний тип вмісту application/x-www-form-urlencoded:

POST /test HTTP/1.1
Host: abc.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 40

field1=value1&field2=value2

Тестування API із запитами PUT

Ось кроки для тестування API із запитами PUT:

Тестування API із запитами PUT
Тестування API із запитами PUT

Крок 1) Оновіть ресурси за допомогою запиту PUT.

Крок 2) Використовуйте метод GET для ресурсу. У разі успішного виконання запиту PUT ви отримаєте нові дані. Цей метод не спрацює, якщо надані дані в запиті недійсні. Тому він нічого не оновить.

Тестування API із запитами POST

Ось кроки для тестування API із запитами POST:

Тестування API із запитами POST

Тестування API із запитами POST

Крок 1) Створіть ресурс за допомогою запиту POST і переконайтеся, що він повертає код статусу 200.

Крок 2) Зробіть запит GET для цього ресурсу та збережіть дані в правильному форматі.

Крок 3) Ви повинні додати тести, які гарантують, що запити POST не виконуються з неправильними даними.

Переваги методу PUT

Ось плюси/переваги використання методу PUT:

  • Це допоможе вам зберегти надану сутність під наданим URI
  • Якщо надана сутність уже існує, ви можете виконати операцію оновлення або створити за допомогою цього URI.
  • Ви можете створювати ресурс скільки завгодно разів.
  • Створити ресурс за допомогою методу PUT дуже просто.
  • Вам не потрібно перевіряти, чи натискав користувач кнопку «Надіслати» кілька разів чи ні.
  • Він може ідентифікувати сутність, додану до запиту.

Переваги методу POST

Ось плюси/переваги використання методу POST:

  • Цей метод допомагає визначити URI ресурсу.
  • Вказати новий заголовок розташування ресурсу дуже легко за допомогою заголовка розташування.
  • Ви можете надіслати запит на прийняття сутності як нового підпорядкованого ресурсу, який ідентифікується URI.
  • Ви можете надсилати створені користувачем дані на веб-сервер.
  • Це дуже корисно, якщо ви не знаєте URL, щоб зберегти будь-який ресурс.
  • Використовуйте POST, коли вам потрібен сервер, який контролює генерацію URL ваших ресурсів.
  • POST є безпечним методом, оскільки його запити не зберігаються в історії браузера.
  • Ви можете без зусиль передати великий обсяг даних за допомогою пошти.
  • Ви можете зберегти конфіденційність даних.
  • Цей метод можна використовувати для надсилання двійкових даних, а також даних ASCII.