У меня есть веб-сайт, который я разрабатываю, внутренний маршрут, который не работает, это / login с compojure, как:

(POST login "/" [] check-admin-before-logging) 

Вот что делает функция check-admin-before-logging:

 (defn redirect-admin-to-page [] (-{amp}gt; (response/redirect "/admin/home") (assoc :body "logging you in...") (assoc :cookies {:token (token/sign-token)}))) ;; function that checks whether credentials are in fact valid. ;; check-admin is a db func which compares hashed pswd with input. (defn check-admin-before-logging-in [request] (let [username (:username (:params request)) password (:password (:params request))] (if (check-admin username password) (redirect-admin-to-page username) (str "username : " username " and password " password " is not valid.n" request)))) 

На данный момент он просто возвращает строку, как в целях тестирования.

и для приложения я обернул его в следующее промежуточное ПО:

 (def app (-{amp}gt; all-routes (wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false)) (wrap-json-body) ;; (wrap-json-params) (wrap-json-response) )) 

Теперь, когда я делаю AJAX-запрос со следующим интерфейсом:

 (defn submit [] (let [username *grabbed from input field...* password *grabbed from input field...*] (POST "/login" {:params {:username username :password password}}))) 

Но проблема возникает, когда я нажимаю кнопку и получаю это . Консоль показывает результат самого запроса post: параметры: пустые, а некоторые искаженные данные JSON в ключе: body. Если бы я попытался включить

 (wrap-json-params) 

в приложении я получу ноль в ключах: body и: params. Более того, кажется, что есть проблема с выводом, поскольку у cheshire есть проблемы с его разбором. Если я оставлю библиотеку ring-json в стороне и просто установлю значения по умолчанию для приложения, я получу это для ключа тела

 :body #object[org.eclipse.jetty.server.HttpInputOverHTTP 0x6ef9a9e1 HttpInputOverHTTP@6ef9a9e1] 

Мой вопрос: как мне изменить json, чтобы его можно было понять с помощью wrap-json-params или cheshire? Любой совет высоко ценится.