Size: a a a

Clojure — русскоговорящее сообщество

2020 January 27

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну, в моих приложениях роутинг это
1) получение идентификатора узла из параметров запроса
2) получение урла для заданного идентификатора узла и параметров

причём большинство роутеров на рынке не решают задачу номер 2 так, как мне нужно 😊

а так да, если у тебя uri без переменных, то достаточно и мапы
проблема в тяжком наследии, что когда-то кто-то решил, что хорошо будет запихать параметры в урль каким-то своим способом
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
понятно почему там может получаться, но просто я про то, что не стоит считать это хорошей правильной практикой.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
проблема в тяжком наследии, что когда-то кто-то решил, что хорошо будет запихать параметры в урль каким-то своим способом
не понимаю, о чём ты
по крайней мере в контексте разработки приложения, когда я сам проектирую схему урлов
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Sergey Trofimov
не понимаю, о чём ты
по крайней мере в контексте разработки приложения, когда я сам проектирую схему урлов
когда сам проектируешь вот такой урль делать не надо
/module/:id/update
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
когда сам проектируешь вот такой урль делать не надо
/module/:id/update
если речь про апи для определённых клиентов, то в первую очередь важны интересы клиентов
и какие у клиентов проблемы с адресами типа /module/:id/update ?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
это еще один кастомный вид енкодинга данных
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
когда сам проектируешь вот такой урль делать не надо
/module/:id/update
если это сайт, и клиент — браузер, то не вижу никакой проблемы
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
потом кто-нибудь сделает ид с пробелом, но клиент это забудет прохендлить
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
это еще один кастомный вид енкодинга данных
а есть канонический вид, которого все придерживаются?
ну так просто дай нам ссылку на документацию, и мы будем делать правильно
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
могу своими практиками поделиться немного погодя
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
скажу сразу, REST в классическом виде я не считаю правильным :)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
потом кто-нибудь сделает ид с пробелом, но клиент это забудет прохендлить
а, это клиенты, которые не умеют правильно формировать урлы?
так на моей практике ребята и в form params не умели правильно заенкодить
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Sergey Trofimov
а, это клиенты, которые не умеют правильно формировать урлы?
так на моей практике ребята и в form params не умели правильно заенкодить
когда есть какое-то кастомное формирование, то вероятность ошибки там сильно больше
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Maxim Penzin
потом кто-нибудь сделает ид с пробелом, но клиент это забудет прохендлить
это очень типичный случай, и рестовые системы проверяюь айдишник на инт, например https://github.com/weavejester/compojure/wiki/Destructuring-Syntax
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
это на бэкенде. Но там сначала джаваскриптеры напишут "/module/object" + id + "/update"
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну и отлетят с плохим статусом
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
они отлетят потом когда-то в проде, когда в иде появятся неправильные символы
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
а вот всякие пареметры из axios уже умеет правильно кодировать и не ломаться
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а вы логируйте в sentry ошибки на клиенте.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Maxim Penzin
это на бэкенде. Но там сначала джаваскриптеры напишут "/module/object" + id + "/update"
такие умники точно так же напишут "/module/object/update?id=" + id и будут точно так же не правы
источник