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