ГоловнаВсі публікаціїКатегоріїПро проєкт

Чим відрізняється PUT від PATCH?

Зміст дописунатисність на посилання, щоб перейти до потрібного місця
PUT і PATCH - це два HTTP-методи, які використовуються для оновлення ресурсів на сервері у контексті RESTful веб-служб. Основна різниця між ними полягає в тому, як вони взаємодіють з існуючими ресурсами.

PUT (Заміна об'єкту)

Запит PUT вказує на те, що клієнт відправляє нове представлення ресурсу, яке повинно повністю замінити поточний стан ресурсу або створити новий, якщо його не існує. Іншими словами, весь ресурс повинен бути замінений новим.
Ruby on Rails приклад:
# Контролер
def update
  @user = User.find(params[:id])
  if @user.update(user_params)
    render json: @user
  else
    render json: @user.errors, status: :unprocessable_entity
  end
end
У цьому прикладі, update використовується з PUT-запитом, і @user.update(user_params) замінює всі атрибути користувача новими значеннями, які надходять з клієнта. Мається на увазі те що user_params - містять всі параметри об'єкту (моделі).

PATCH (часткове оновлення)

Запит PATCH вказує, що клієнт відправляє часткове оновлення ресурсу, тобто тільки ті дані, які потрібно змінити, без необхідності відправляти всю інформацію про ресурс. Це зручно, коли клієнт хоче оновити лише певні поля ресурсу. Наприклад - тільки одну секцію форми інформації про себе на сайті.
Ruby on Rails приклад:
# Контролер
def update
  @user = User.find(params[:id])
  if @user.update(user_partial_params)
    render json: @user
  else
    render json: @user.errors, status: :unprocessable_entity
  end
end
Тут @user.update(user_partial_params) використовується для часткового оновлення користувача за допомогою PATCH-запиту, де user_partial_params містить лише ті поля, які потрібно оновити.
Узагальнюючи, PUT використовується для повного оновлення ресурсу, тоді як PATCH використовується для часткового оновлення, дозволяючи зберігати інші частини ресурсу незмінними.
Ruby on Rails доволі розумний фреймворк і він сам визначає який запит йому потрібно робити. Це дозволяє автоматизувати і впростити логіку контролера і робить код більш чистим та зрозумілим.
Тобто технічно виклик @user.update(user_params) (який ми розгядали до цього як PUT) може бути PATCH а не PUT, через те що форма на фронтенді має не всі поля об'єкту. 
19.12.2023 18:15

Що таке SSL та TLS? В чому полягає різниця?

meme code
meme code@memecode
19.12.2023 18:17

Що таке протокол HTTP? Яка різниця між HTTP та HTTPS?

meme code
meme code@memecode
19.12.2023 19:10

Що таке атака "людина посередині"?

meme code
meme code@memecode
20.12.2023 17:33

Що таке API? Чи може вебзастосунок використовувати більше, ніж один API?

meme code
meme code@memecode
23.12.2023 10:18

Що таке REST API? Основні принципи REST та GET, POST, PUT, PATCH, DELETE.

meme code
meme code@memecode
23.12.2023 10:22

Що таке RESTful та чим відрізняється від REST?

meme code
meme code@memecode
23.12.2023 11:29

Що таке cookies?

meme code
meme code@memecode
23.12.2023 11:40

Що таке сесія? (Web)

meme code
meme code@memecode
24.12.2023 12:08

Що таке penetration testing (тестування на проникнення)?

meme code
meme code@memecode
24.12.2023 12:08

Що таке SQL Injection?

meme code
meme code@memecode
Що таке DOM?
24.12.2023 12:22

Що таке DOM?

meme code
meme code@memecode
24.12.2023 12:23

Що таке Cross-Site Scripting (XSS)?

meme code
meme code@memecode