Что за мода пошла? REST-like HTML CRUD

Вурдалак

Продвинутый новичок
кто решает - неважно, user agent точно так же получает выбор по списку статусов с любым названием и смыслом
Это соломенное чучело, я обратного не утверждал и это не имеет отношения к начальному тезису.
На некоторых сайтах это именно способ удалить свою страницу (ok.ru, если не ошибаюсь, так поступают).
На некоторых — просто блокировка.
Как именно хотят трактовать разрыв отношений с сайтом — вопрос владельцев и даже, в некоторых случаях, возможно, юристов.
Хотят ли они просто отображать «Пользователя не существует» или «Пользователь был заблокирован» — вопрос философский, юридический, но никак не вопрос к REST.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
как в анекдоте: мне уже скучно, а тебе уже непонятно

короче, посмотри этот REST API у EVE online, хороший пример грамотной реализации
или https://developers.google.com/drive/v3/web/manage-changes
(сущность под названием changes)

будет вопрос, на который смогу ответить - с удовольствием отвечу
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
А ты посмотри Рик и Морти, это лучшее, что я видел, помимо Футурамы. Жду четвёртый сезон.
 

Вурдалак

Продвинутый новичок
я не понимаю, недостаточно - 400! уж точно определю что сам себя удаляю и даже вопрос задам "хотите удалить свой акк?, вон кнопка, долги оплатите и свободны"
Ты просто непробиваем. Недостаточно будет в тот момент, когда ты осознаешь, что тебе их нужно различать. А так у тебя всё будет прекрасно работать. Тебе только потом в голову придёт понимание, что это два разных действия. Capisce?

Тебе нужно различать как именно себя удалять, а не факт того, что ты удаляешь себя. В этом был пример. Ай, ладно...
 

WMix

герр M:)ller
Партнер клуба
пользователь залогинен, getCurrentUser()->id !== $id && accountSum->(getCurrentUser()->id) === 0 написать не сложно, как бы там stateless небыло
хочешь это называется before delete
 

Вурдалак

Продвинутый новичок
пользователь залогинен, getCurrentUser()->id !== $id написать не сложно, как бы там stateless небыло
Прочитай ещё раз мой пример:
Я тебе попробую помочь вернуться в русло дискуссии, чтобы ты понимал в чём именно наш пойнт. Что если мы хотим предоставить админу выбор как совершить харакири — от имени администрации (объявить себя нарушителем; возможно, админ почувствовал, что его пароль могли скомпроментировать и ему нужно срочно удалить самого себя с концами) или от имени обычного пользователя (устал, но обещал вернуться: у него будет возможность себя восстановить, введя свой пароль; но админ не может воспользоваться этим вариантом, поскольку пароль-то мог быть скомпроментирован). Как ты в своём универсальном методе DELETE /users/42 отличишь эти два кейса? Возможно, ты передашь параметр, но то-то и оно, ты почувствуешь, что это принципиально разные бизнес-действия и их нужно чётко различать. CRUD тут мешает.
Ты без проблем поймёшь себя ты там удаляешь или не себя. Ты админу две кнопки выведи: «Удалить себя как админ», «Просто удалить себя». Потом вызови в модели соответствующие методы: $user->deleteByAdmin() и $user->leaveThisSiteForAWhile(). В твоём примере ты всегда будешь вызывать leaveThisSiteForAWhile(), поскольку getCurrentUser()->id === $id.
 

Вурдалак

Продвинутый новичок
delete /user/42
Удалить_себя_как_админ=1
Что и требовалось доказать:
Возможно, ты передашь параметр, но то-то и оно, ты почувствуешь, что это принципиально разные бизнес-действия и их нужно чётко различать. CRUD тут мешает.
Ты уже скорее всего постфактум о таких вещах задумаешься, добавишь вот этот хак «удалить_себя_как_админ» в то время как это просто должно быть «удалить_от_имени_админа», если уже на то пошло.

Ты даже на форуме не с первого раза это понял, а в боевоем приложении об этой проблеме узнаешь через полгода, потому что ты рубаха-парень, ты удалять, обновлять, сотворять. А нужно на бизнес-языке говорить, тогда недопонимания будет меньше.
 

WMix

герр M:)ller
Партнер клуба
Что и требовалось доказать:
ну я же ничего не нарушил? при этом можно было и post /user/24/Удалить_себя_как_админ написать это не нарушает rest, а на сервис вообще никак не реагирует, как контроллер смаппит рест так сервис и вызовется
 

Вурдалак

Продвинутый новичок
ну я же ничего не нарушил? при этом можно было и post /user/24/Удалить_себя_как_админ написать это не нарушает rest, а на сервис вообще никак не реагирует, как контроллер смаппит рест так сервис и вызовется
А я и не утверждал обратного. Я лишь делаю акцент на то, как CRUD-программисты подходят к проблеме: очень небрежно, не задумываясь о реальных бизнес-действиях, а думая о том, что это значит с технической точки зрения. CRUD — это сильное обобщение реального действия. А из общего получить частное уже не получится.
 

Тугай

Новичок
Я лишь делаю акцент на то, как CRUD-программисты подходят к проблеме: очень небрежно, не задумываясь о реальных бизнес-действиях, а думая о том, что это значит с технической точки зрения. CRUD — это сильное обобщение реального действия. А из общего получить частное уже не получится.
Самоудаляющийся админ от имени простого пользователя :)) Нахрен такие бизнес действия. У руководства по 100500 идей и часто это еще не оформившиеся идеи и все это в код в виде бизнес действий ?
CRUD он понятен, вчера сегодня и завтра. :)
 
Сверху