
Aleh
17.05.2018
11:01:22
Это про транспорт, а не про ваше приложение

Adel
17.05.2018
11:01:29
и приходится язык http переводить на язык бизнеса.
лишнее

Артур Евгеньевич
17.05.2018
11:02:03

Google

Yet Another Stats
17.05.2018
11:02:20
https://b.yasb.exileed.com/telegram/chat/1001071233926

Aleh
17.05.2018
11:02:25
А язык smtp не надо на язык бизнеса переводить или вебсокеты там?
Или amqp

Sergey
17.05.2018
11:07:28
с этой точки зрения RPC намного ближе к тому что ты хочешь)


Adel
17.05.2018
11:09:24
У меня что? Какая плохая точка зрения?
Sergey Protko, [12.12.17 12:32]
как будет выглядеть метод API для смены пароля пользователя?)
Sergey Protko, [12.12.17 12:32]
на вход два поля - старый и новый пароль
Борис Беньковский, [12.12.17 12:32]
PATCH /user/{id}/
password: MY_FUCKIN_PASSWORD
new_password: MY_FUCKIN_NEW_PASSWORD
Sergey Protko, [12.12.17 12:32]
как ты будешь это в коде делать?
Sergey Protko, [12.12.17 12:33]
у тебя ж выходит будет куча действий на PATCH /user/{id}
Sergey Protko, [12.12.17 12:33]
как ты это в коде маршрутизировать будешь?
Sergey Protko, [12.12.17 12:33]
как будешь проверять что password валиден?
Sergey Protko, [12.12.17 12:33]
и что мы можем поменять пароль?)
я тут себе для презенташки записал как-то... :)
а хотя он тут просто неправильно рест готовит. ладно.


Evgeniy
17.05.2018
11:17:38
про маршрутизировать не согласен, большинство маршрутизаторов маршруты на основе регулярок по url делают
но маршрутизатор то маршрутизирует Request а он не только из url но и body состоит

Google

Evgeniy
17.05.2018
11:18:51
просто все привыкли (HTTP_METHOD, REGEXP, Controller (или что угодня для обработки маршрута))

Sergey
17.05.2018
11:19:02
ну то есть у тебя оно накладывает только ограничения что бы ресурсы были cachable
то есть не допускать двусмысленности
все
дальше называй че как хочешь

Evgeniy
17.05.2018
11:20:17

Sergey
17.05.2018
11:20:27
GET activeAppointments?category=1,2,3foo=bar

Evgeniy
17.05.2018
11:20:28
и о проблемах это маршрутизировать

Sergey
17.05.2018
11:20:31
вот тебе вполне по rest-у
как и многие

Adel
17.05.2018
11:21:02
ну да. я вот как раз на этом примере пытаюсь обьяснить, что CRUDмышление силньо вредит когда проект растет и логика уже давно не crud

Evgeniy
17.05.2018
11:21:06
ну возможно, просто я сколько вижу разговоров за рест
у всех он свой и специфичный
как и mvc

Adel
17.05.2018
11:21:24
я вот думаю что многие путают. уж очень оно.. толкает

Sergey
17.05.2018
11:21:29
я могу скинуть тебе видос где объясняю свою точку зрения что у тебя нет и никогда не будет rest)

Evgeniy
17.05.2018
11:21:33

Google

Evgeniy
17.05.2018
11:21:49
и всякие graphql, odata и тд занялись этими вопросами

Sergey
17.05.2018
11:21:54

Evgeniy
17.05.2018
11:22:01
и на фоне этих проблем rpc не выглядит так плохо

Adel
17.05.2018
11:22:04
кстати да. главное - это write
глаголы.

Sergey
17.05.2018
11:22:37
глаголы.
UserManager - существительное но бесполезное
или UrlVerifier - существительное но как бы нет
это не важно

Adel
17.05.2018
11:23:02
PostPublishUseCase $post->publish();

Sergey
17.05.2018
11:23:09
важно то как ты воспринимаешь изменение. Большинство воспринимают изменение как замену стэйта
патчинг объектов и прочий трэш

Adel
17.05.2018
11:23:18
я на таких примерах пытаюсь обьяснять

Sergey
17.05.2018
11:23:29
главное когда делаешь апишку понимать что и зачем ты делаешь. Понимаешь ли ты ограничение cachable из rest, про unified interface ограничения и т.д.
если нет - заткнись и пиши код и не выпендривайся
как там в кватновой физике - "заткнись и считай"

Evgeniy
17.05.2018
11:24:50
так когда ты пишешь и не выпендриваешься
то разработка гибкая
и хз как получится все потом через год
то что было год назад нормально

Google

Roman ?
17.05.2018
11:25:16

Sergey
17.05.2018
11:25:21

Evgeniy
17.05.2018
11:25:48

Like
17.05.2018
11:26:13

Evgeniy
17.05.2018
11:26:16
поэтому у тебя 2 варианта:
1. Оверинжиниринг
2. Бритва оккама, если что потом перепишешь
потому что хз что будет через год и какую часть приложения надо будет расширять
а где все заложенное расширение оверинжиниринг

Sergey
17.05.2018
11:29:21

Evgeniy
17.05.2018
11:29:35
джилет

Sergey
17.05.2018
11:29:48
джилет
ты меня понял, я про бритвы которые должны истину обножать)

Evgeniy
17.05.2018
11:30:40
слышал о хенлоне каком то
но я хз, чукча писатель, не читатель.

Sergey
17.05.2018
11:31:39

Evgeniy
17.05.2018
11:31:58
возможно, возможно они и не правильные
но обычно или закладываются на функционал и пишут его очень долго когда оно готово уже никому не нужно или расширять надо что то другое, очень редко функционал что закладывался для расширения потом использовали

Sergey
17.05.2018
11:33:24

Evgeniy
17.05.2018
11:33:26
или другой вариант ебошишь прототип если все норм переписываешь кусками
фильтраций, сортировки и тд
например часть ресурса в бд реляционной, а часть лежит в редисе, монге и тд и надо сделать фильтрацию и сортировку

Google

Evgeniy
17.05.2018
11:37:46
а еще например иногда просят какому нибудь клиенту полный ответ отдавать а другим не полный и надо скрывать поля (ну или правильней делать новый ресурс без полей что не нужны но тогда он полностью дублирует другой ресурс почти)

Sergey
17.05.2018
12:00:47
короч я не вижу никаких проблем со чтением. Есть вопросы, да, нет стандартов, нет серебрянных пуль, просто смирись с этим. Но проблем как бы нет.
а вот запись, изменение стэйта и т.д. в контексте API (что влечет за собой проблемы инвалидации кэша на клиенте например) это реально вопрос.
но если у тебя нет http cache - то у тебя и проблем и ограничений нет)

Evgeniy
17.05.2018
12:03:16
ну вопрос инвалидации кэша он известен давно

Sergey
17.05.2018
12:03:29

Roman
17.05.2018
12:06:13

Vlad
17.05.2018
12:08:58

Sergey
17.05.2018
12:12:12
https://www.youtube.com/watch?v=2nELo4fJMNQ - на но это так, шутки ради

Vlad
17.05.2018
12:12:32
Спасибо!

Roman
17.05.2018
12:12:35
спасибо

Sergey
17.05.2018
12:12:39
основной посыл - rest это архитектурный стиль а не что-то конкретное. И на этом все.

Dmitriy
17.05.2018
12:28:32

Sergey
17.05.2018
12:29:05