
Sergey
03.03.2017
08:38:23
> For true MVC we need a central long living controller
не контроллер а view. Контроллер stateless и его цикл жизни вообще никого не интересует

Dima
03.03.2017
08:39:06
Почему?

Sergey
03.03.2017
08:39:41
потому что он stateless)
в целом и view может быть stateless а модель просто сообщаент ивентами вьюхе "обновиться"

Google

Dima
03.03.2017
08:40:56
А restful почему не имеет практического смысла?

Sergey
03.03.2017
08:41:26
ну то есть вьюха отображает стэйт приложения для пользователя, пользователь кликает на какой-то контрол и событие приходит в контроллер. Контроллер на это событие просить модель что-то сделать. Модель что-то делает и кидает событие "я обновилсо" и вьюха по этому событию себя перерисовывает. Данные идут строго в одном направлении. На бэкэнде это никому особо не нужно
а если большинство не знают, то употреблять этот термин нет смысла
играл же в испорченный телефон
ну мол пример. Я тебе говорю "у меня restful API" а ты себе "так, то есть у него есть CRUD-like HTTP API"
или например "GraphQL круче REST"
большинство думают "круто! нафиг HTTP API!" а я думаю "Воу воу, но... graphql в целом похож на что-то restful"

Jerry
03.03.2017
08:44:23
И что же такое Restful API?)

Dima
03.03.2017
08:45:00
Не знаю что такое REST.

Sergey
03.03.2017
08:45:03
Representational State Transfer. Ключевое слово - state transfer.

Jerry
03.03.2017
08:45:36
не термин его
а основопологающая

Google

Sergey
03.03.2017
08:46:09
ну то есть у тебя есть граф объектов и связи между ними. Это все - ресурсы. У них есть идентификаторы - URI. Ты можешь что-то делать со всем этим (GET/POST/PUT/DELETE) и за счет этого происходит переход системы из одного стэйта в другой
в целом REST это набор ограничений которые дают тебе определенные характеристики архитектуры

Jerry
03.03.2017
08:47:21
Да я то в курсе, что это, думал может что-то новое узнаю)

i
03.03.2017
08:47:35
в википедии всё есть

Sergey
03.03.2017
08:47:40
ну тип по сути правильный REST нельзя сделать без HATEOAS
а HATEOAS делают мало кто
вот когда у тебя ресурс сам тебе говорит какие релейшены у него могут быть
тогда можно делать крутые штуки

Jerry
03.03.2017
08:50:35
это все из разряда over engineering

Sergey
03.03.2017
08:50:56
у тебя есть API
например... что-то типа бложика
простая шляпа да?
есть ресурс - "статья". и ее можно редактировать например
идет время и помимо "автора статьи" и "администратора" (такие проверки на клиенте делать удобно) появляются штуки вроде "а еще статью могут редактировать главный редактор блога и редакторы разделов"
и тут уже сложности начинаются
скорее всего закончится это какими-то флагами в json аля editable: false
а можно добавить линку
{"rel": "article.edit", "href": "https://api.com/articles/123"}

Jerry
03.03.2017
08:53:48
для этих дел

Google

Sergey
03.03.2017
08:53:50
и клиент будет знать что если есть такой релейшен - значит надо показывать кнопку edit

Jerry
03.03.2017
08:53:52
есть State Machine

Sergey
03.03.2017
08:54:05

Jerry
03.03.2017
08:54:14
и ACL

Sergey
03.03.2017
08:54:25
ну то есть с какой стороны у тебя ACL будет?
на клиенте продублируешь?
или на сервере будешь говорить ресурсам в какой стэйт они могут перейти? (ну мол твой автомат)

Jerry
03.03.2017
08:56:42
а в чем проблема стеделать HATEOAS на основе ACL, StateMachine?

Aleh
03.03.2017
08:56:42

Jerry
03.03.2017
08:57:00
и выдавать ресурсы
какие нужны

Jerry
03.03.2017
08:58:59
мы говорим просто об одном и том же, потому что на бэк части всеравно все проверки будут реализованы, выдаваться просто будет то, что нужно для конкретного пользователя например

Sergey
03.03.2017
08:59:41

Jerry
03.03.2017
08:59:57
поэтому я и написал, что мы о том же
об одном и том же

Sergey
03.03.2017
09:00:19
ну проблема в том что помимо ACL есть еще масса вещей которые часто дублируются на клиенте
ну и опять же большинство просто не делают HATEOAS
потому дублирование логики на клиент и вылазит

Jerry
03.03.2017
09:01:05
ну без HATEOAS нереально сделать нормальный websocket даже

Google

Jerry
03.03.2017
09:01:12
потому что логика будет дублироваться
на клиенте, на вебсокете
на бэкенде

Sergey
03.03.2017
09:05:48
тип у тебя когда ты шлешь ивент в нем есть "следующий стэйт"?
ну тип что-то типа тех же релейшенов только вместо URI используется что-то другое?
или ты просто говоришь про сферические конечные автоматы в вакууме

Jerry
03.03.2017
09:07:36
я имею ввиду конктертную реализацию HATEOAS
и как он формирует все связи
и посредством чего

Admin
ERROR: S client not available

Jerry
03.03.2017
09:08:16
ладно не важно, мы об одном и том же, я это понял
долго все расписывать
было бы время
)

Sergey
03.03.2017
09:10:56
конкретную)

Jerry
03.03.2017
09:11:10
я имел ввиду допустим реализацию вебсокетов, которые ограничены прослушкой, только в админке, в самом сокете то нужно каким-то образом понять, может пользователь слушать его и данные принимать или нет.
и что бы не дублировать ничего
можно се сделать посредством вот этих вот действий

Google

Sergey
03.03.2017
09:11:48
так это не про HATEOAS
ну мол HATEOAS это про гипермедиа
а я что-то как-то не видел websockets передающие гипертекст (с релейшенами)

Jerry
03.03.2017
09:12:49
а зачем передевать

Sergey
03.03.2017
09:12:53
так блин

Jerry
03.03.2017
09:12:59
ну допустим если сокеты

Sergey
03.03.2017
09:13:00
мы таки про разные штуки походу говорим

Jerry
03.03.2017
09:13:04
socket.io

Sergey
03.03.2017
09:13:06
ну

Jerry
03.03.2017
09:13:31
не имеющие доступа к сервисам
только API
хотя не
можно но костыль
но не везде нужен HATEOAS

Sergey
03.03.2017
09:18:46
ну мол это вполне конкретная штука (в отличии от REST)

Jerry
03.03.2017
09:19:13
https://spring.io/understanding/HATEOAS

Sergey
03.03.2017
09:19:18
Hypermedia как минимум в названии должен намекать

Jerry
03.03.2017
09:19:33
отсюда понимал еще когда Spring учил

Sergey
03.03.2017
09:20:04
ну, а теперь причем тут socketio?

Jerry
03.03.2017
09:20:21
я ж ответил
это костыль

Sergey
03.03.2017
09:20:24
ну то есть да, мы можем сделать ивенты кусочками стэйта с транзишенами описанными в виде релейшенов