Когда нужно сделать метод редактирования, возникает дилемма. В REST уместны два подхода.
1️⃣ PUT - полное изменение ресурса
На вход передаются все параметры объекта (ресурса), включая те, которые не меняются.
📍 Пример:
Хочу отредактировать только название товара.
✅ Как работать с PUT:
Передавать на вход вообще все параметры товара - название, описание, цена и т.д. Даже если я хочу поменять только название.
🙌 Как бывает в реальности:
Полную передачу параметров игнорируют и делают PUT, который работает по правилам PATCH.
2️⃣ PATCH - частичное изменение ресурса
На вход передаются только данные, которые нужно поменять.
Идеален для случаев, когда меняется статус (заблокировать пользователя, архивировать товар, отменить заказ и т.п.).
📍 Пример:
Хочу отредактировать только название товара.
✅ Как работать с PATCH:
В запросе отправляется только название товара.
Ничего лишнего.
Это позволяет экономить трафик.
🙌 Как бывает в реальности:
Используют PUT вместо PATCH, потому что так исторически сложилось 😄
📌 Как быть, если вы встретились с подобной задачей впервые?
Если проект действующий, то посмотрите какие методы уже используются для редактирования:
+ Все PUT? Выбирайте PUT
+ Все PATCH? Выбирайте PATCH
+ Есть и PUT, и PATCH? Или новый проект? Обдумать решение согласно концепции REST
Подготовила пример задачи на Backend, который показывает, как работать с редактированием через PUT:
PUT /products/{productId} - Редактировать
товар фермером/продавцом
Что важного внутри:
▫️ обоснование, почему PUT, а не PATCH
▫️ редактирование картинок у товара - отдельные методы
▫️ новый каталог seller-api на сервере (сравните URL с поиск товаров покупателями)
▫️ алгоритм для API в микросервисной архитектуре
▫️ обработка HTTP-401 и HTTP-403 в алгоритме (требования к реализации) и в примерах ответов
🔖 Новый образец требований по REST API (метод PUT) в ваш личный архив.
#RestApiGA #FarmFreshGA