Size: a a a

Software Design/Architecture/Zen

2021 June 18

П

Павел in Software Design/Architecture/Zen
с помощью REST вы можете управлять ресурсами. Если lock это ресурс, то он создаётся и удаляется. Если это элемент ресурса то он изменяется. Как статус. Может я лочу изменяя статус на LOCKED. Тогда я использую патч.
источник

D

Dmitry in Software Design/Architecture/Zen
мне кажется, вы не прочитали диалог выше о REST. Поэтому мы говорим немного на разных языках)
источник

П

Павел in Software Design/Architecture/Zen
Я прочел книгу которую скинул выше. Там объясняется этот момент
источник

SP

Sergey Protko in Software Design/Architecture/Zen
не нужен он. Вообще никогда и никому
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если книгу не Рой Филдинг писал то это хуита
источник

П

Павел in Software Design/Architecture/Zen
Ок приятель, пусть так. Главное беречь нервы)👍
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а потому хуевые апишки без документации.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если ты мэпишь "сущности на ресурсы" то не надо писать свой бэк, возьми готовые обертки над СУБД и живи счастливо с той апишкой которую они тебе генерят.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
источник

SP

Sergey Protko in Software Design/Architecture/Zen
вот пример с твоим любимым PATCH
источник

AB

Aveal Blömqvist in Software Design/Architecture/Zen
Секундочку, если я не хочу все атрибуты ресурса передавать - а мне нужно только например имя обновить. Чем не PATCH? Хотя тогда на клиенте надо будет как-то решать что обновилось, но это тоже можно сделать
источник

SP

Sergey Protko in Software Design/Architecture/Zen
вот именно, вопрос упирается в "а как на клиенте определять что обновлять"
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если у тебя тупой круд то ты всегда будешь отправлять "всю форму". Если тебе надо чет хитрое делать - например генерить diff и отправлять только то что поменялось - то ты можешь получить профит от PATCH если ты юзаешь всякие json patch спецификации к нему (да да, PATCH он не просто "хуяк отправить только пару полей"). Простой юзкейс - ресет значения.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
либо у тебя UI спроектирован так что у тебя "только имя поменялось" - тогда это банально проще сделать отдельным "ресурсом" - /users/{id}/name
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если у тебя "форма" динамически генерится и нужно сохранять по мере ввода данных - то там да можно прибегать к каким-то хитрым дифам и т.д. но "скорее всего" у тебя каждое поле такой формы само по себе ресурс и для экономии ты чет типа batching делать будешь
источник

SP

Sergey Protko in Software Design/Architecture/Zen
вот пример в postgrest* неплохой для PATCH

PATCH /mytable?primaryKey={id}

{
   "name": "new name"
}
источник

SP

Sergey Protko in Software Design/Architecture/Zen
потому что нет двусмысленностей никаких. все просто и понятно мэпится на условный UPDATE

UPDATE mytable SET name=:name WHERE primaryKey=:id
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а так люди обмазываются потом каким http://jsonpatch.com/
источник

SP

Sergey Protko in Software Design/Architecture/Zen
и клиент становится чет сильно сложным. Если это еще апишка для интеграций каких то вообще жуть
источник

SP

Sergey Protko in Software Design/Architecture/Zen
с той же блокировкой - да удобно "в голове" представлять что это "тупо флаг в базе". Ток в реальности это самодостаточный процесс может быть
источник