
Виктор
18.09.2017
07:48:28
например PUT /api/messages/123/likes
ВОпрос тогда можно, а если надо коогда вы дергаете PUT /api/messages/123/likes запустить какой-нить фоновый процесс, отправить скажем сообщение телеграм ботом. Вы эти вызовы в сущности закинете? То есть будете делать то, что не рекомендуется разработчиками доктрины, использовать в сущностях объекты более выского уровня, которые наоборот как раз сами должны оперировать с сущностями?

Sergey
18.09.2017
07:48:49

Sergey
18.09.2017
07:48:50

Виктор
18.09.2017
07:48:58
Поэтому я считаю что АПИ-шка не должна работать непоследственно с сущностями - должен быть еще слой бизнес-логики дополнитлеьный

Google

Anatoly
18.09.2017
07:49:10

Виктор
18.09.2017
07:49:14

Sergey
18.09.2017
07:49:20
в целом оно вернет тебе ресурсы
репрезентацию данных
я могу делать всякие разные репрезентации даже не имея таких "сущностей"
ну либо определись что есть "сущность" что бы мы случайно про сущности доктрины не говорили

Sergey
18.09.2017
07:50:12
ты ж не вернешь просто список людей, которые пролайкали? у каждого лайка будет свой идентификатор, что делает его в принципе сущностью

Sergey
18.09.2017
07:50:26
а сущности там внутри. dao и процедурки или еще чего - это не столь важно.

Виктор
18.09.2017
07:51:15
Так REST у меня или RPC? ))))

Sergey
18.09.2017
07:51:18
проблемы начинаются когда люди начинают настолько сильно обобщать что у них теперь REST работает с сущностями
интересно как много тут людей знают как аббривиатура REST расшифровывается

Google

Sergey
18.09.2017
07:51:40
и какое отношение REST имеет к конечным автоматам

Anatoly
18.09.2017
07:52:16

Виктор
18.09.2017
07:54:32
Вот и я не понимаю- хотя лет 6 где-то пишу апишки разные и всегда называл их REST, когда это все укладывается в спецификации сваггера.

Sergey
18.09.2017
07:55:19

Виктор
18.09.2017
07:55:22
а то что оказывается надо было с Entity работать чтобы называть это REST-ом - впервые узнал. Да правда такой REST не знаю как применять даже в реалльных задачах...

Borys
18.09.2017
07:55:23
не поверишь, только на прошлой неделе перечитывал :))
интересно как много тут людей знают как аббривиатура REST расшифровывается

Sergey
18.09.2017
07:55:58

Виктор
18.09.2017
07:56:09
Кстати говоря про RPC написано:
однако, некоторые построены на основе HTTP (что нарушает архитектуру ISO/OSI, так как HTTP изначально не транспортный протокол).
https://ru.wikipedia.org/wiki/Удалённый_вызов_процедур

Borys
18.09.2017
07:56:13
ща вспомню...
все таки википедию...

Sergey
18.09.2017
07:57:05
ну на вики англоязычной во всяком случае было норм написано
русскоязычную не помню

Anatoly
18.09.2017
07:57:23

Sergey
18.09.2017
07:58:21
потому что повторюсь - это хоть и похожие ресурсы но они разные
если у тебя у лайка есть собственный идентификатор - хоть GET /likes делай

Anatoly
18.09.2017
07:59:11

Sergey
18.09.2017
07:59:27

Виктор
18.09.2017
08:00:20
https://ru.wikipedia.org/wiki/REST#.D0.A2.D1.80.D0.B5.D0.B1.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BA_.D0.B0.D1.80.D1.85.D0.B8.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.B5_REST
Хоть одну строчку мне тут или где-то покажите, почему надо юзать Entity для REST?

Google

Sergey
18.09.2017
08:00:39
удаленный вызов процедур... штука в том что процедуры не должны ничего возвращать)

Sergey
18.09.2017
08:01:03
но они у тебя содержат тело?)
или только локейшен на новый ресурс?

Sergey
18.09.2017
08:01:50
у меня нет rest апишек)

Sergey
18.09.2017
08:01:58
)
как бы ты делал array_pop по ресту?) ну и array_replace например

Sergey
18.09.2017
08:03:19

Sergey
18.09.2017
08:04:02
а при чем тут рест?
это на самом деле не к тебе вопрос... это я хотел про еще один "косяк" людей напомнить - стериотип что post для создания и put для обновления
хотя этот момент как раз таки в спеке по http очень даже хорошо прописан

Sergey
18.09.2017
08:04:34
если array_pop еще можно отделаться с DELETE messages/last, то replace работает сразу со всей коллекцией же

Sergey
18.09.2017
08:05:16

Sergey
18.09.2017
08:05:55

Sergey
18.09.2017
08:05:58
и если у тебя (предположим) все операции над сущностями не идемпотентны ты закончишь с rpc хочешь ты того или нет. И это будет по rest-у (с оговоркой что нет)

Sergey
18.09.2017
08:06:03
и с реплейсом в принципе так же

Sergey
18.09.2017
08:06:07

Sergey
18.09.2017
08:06:25
зато рест

Sergey
18.09.2017
08:06:27
POST /collection/pop
вот rest

Sergey
18.09.2017
08:06:35
это рпц

Google

Sergey
18.09.2017
08:06:59
это рпц
тебе тайну открыть?) все rest апишки это на самом деле rpc

Sergey
18.09.2017
08:07:15
в наших реалиях? да

Sergey
18.09.2017
08:07:31

Sergey
18.09.2017
08:07:50
какая разница кто клиент?

Sergey
18.09.2017
08:07:54
или если твое мобильное приложение умеет себя рисовать исходя из гипертекста который ему приходит
какая разница кто клиент?
REST это когда у тебя выполняются определенные ограничения наложенные на архитектуру взаимодействия клиент-сервер
одно из них - Unified Interface
и вот с ним беда

Anatoly
18.09.2017
08:08:40

Sergey
18.09.2017
08:08:42
единственная имплементация REST на сегодняшний день это WWW

Sergey
18.09.2017
08:08:54
у тебя браузеры научились делать DELETE/PUT?

Sergey
18.09.2017
08:09:17
идемпотентный DELETE - что за чушь? где вы эту дрянь взяли. Только GETы идемпотентны.
9.1.2 Idempotent Methods
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request. The methods GET, HEAD, PUT and DELETE share this property. Also, the methods OPTIONS and TRACE SHOULD NOT have side effects, and so are inherently idempotent.
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
идея в том что сервер регламентирует клиенту "куда дальше можно". Делается это элементами гипермедиа такие как ссылки, формы и т.д
это то и дает вэбу бесконечный скейлинг
а тебе для твоей мобилки нужен просто rpc

Sergey
18.09.2017
08:11:08

Sergey
18.09.2017
08:11:46

Anatoly
18.09.2017
08:11:52

Google

Sergey
18.09.2017
08:11:57
это часть спеки http
и не более

Sergey
18.09.2017
08:12:12

Sergey
18.09.2017
08:12:21

Anatoly
18.09.2017
08:12:30
скорее всего имелись в веду ошибки сети а не ресурса

Sergey
18.09.2017
08:12:39

Sergey
18.09.2017
08:13:25

Sergey
18.09.2017
08:13:33

Sergey
18.09.2017
08:13:43

Sergey
18.09.2017
08:13:44
если мы говорим про HTTP API - то тогда все клево

Anatoly
18.09.2017
08:14:07
почему не согласен?
ну нельзя по логике вещей называть иденпотентным то что не может быть им по своей сути DELETE Отрабатывает коректно только один раз и все последующие разы отдает ошибку, это нельзя назвать идемпотентным поведением.

Sergey
18.09.2017
08:14:34

Sergey
18.09.2017
08:14:53
XMLHttpRequest это не совсем браузер

Sergey
18.09.2017
08:15:14

Anatoly
18.09.2017
08:15:15

Sergey
18.09.2017
08:15:33
а rest != http

Sergey
18.09.2017
08:15:39

Sergey
18.09.2017
08:15:58
а все остальное - http api