Size: a a a

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

2019 July 03

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Andrey Ivanov
какая либа удобнее всего в качестве ринговой мидлварки для парсинга жсона в реквестах (параметрах, кверистрингах и бодях) и респонсах? нашел/попробовал 3 варианта, не один особо не нравится
https://github.com/ngrunwald/ring-middleware-format
https://github.com/metosin/muuntaja/
https://github.com/ring-clojure/ring-json
а что именно не нравится?
источник

MP

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

MP

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

MP

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
не нравится то, что в лучшем случае я получаю дублирование распарсенного боди пост-запроса в 2 разных ключах, при этом квери стринг параметров не парсится вообще (остается строкой), и мидлварка распарсивания реквеста не всегда дружит с запарсиванием боди в респонсе. Может я не умею это правильно готовить. Но я хочу тот самый обещаный изоморфизм Рича Хикки - мапки везде (С)
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Andrey Ivanov
не нравится то, что в лучшем случае я получаю дублирование распарсенного боди пост-запроса в 2 разных ключах, при этом квери стринг параметров не парсится вообще (остается строкой), и мидлварка распарсивания реквеста не всегда дружит с запарсиванием боди в респонсе. Может я не умею это правильно готовить. Но я хочу тот самый обещаный изоморфизм Рича Хикки - мапки везде (С)
что-то даже не знаю, у меня все ринговые мидлварки для этого рабтают
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
хотя возможно я респонс своей функцией собираю
источник

MP

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

MP

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

MP

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
у меня же один компожерский хэндлер на все урлы и запросы? и я на него навешиваю все мидлварки - как реквестов так и респонсов? или нет? )
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
вот что-то типа такого
 (-> handler
   (wrap-keyword-params)
   (wrap-json-params)
   (wrap-multipart-params)
   (wrap-params)
   (wrap-cookies)
   (wrap-absolute-redirects)
   (wrap-content-type)
   (wrap-not-modified)
   ; (wrap-frame-options (or :deny {:allow-from "url"}))
   (wrap-xss-protection true {:mode :block})   ; X-XSS-Protection: 1; mode=block
   (wrap-content-type-options :nosniff)))        ; X-Content-Type-Options: nosniff
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
во-во. Но при таком шашлыке у меня валятся ошибки типа java.lang.IllegalArgumentException: Cannot open <{"p" 1, "q" "22"}> as an InputStream потому что первая мидлварка уже превратила стрим в мапку с ключами-строками, а какая-то из следующих думает что в боди еще стрим
источник

MP

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

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
может быть их местами переставить?)
источник

MP

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

MP

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
спасибо, я погуглю из каких либ вы это все понадергали )
источник

MP

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

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Andrey Ivanov
спасибо, я погуглю из каких либ вы это все понадергали )
да это все ринг штатный
источник