我正在寻找一种在 ClojureScript 浏览器客户端和 Clojure 服务器之间方便地交换 Clojure 数据结构的方法。
目前我在前端使用 cljs-ajax,在后端使用 ring/compojure + transit-middleware。
到目前为止,我只能让服务器响应以这种方式工作。但是,这是一个往返代码,目前会带来一些麻烦:
客户:
(def data {:nested #{(rand-int 1000)}})
(POST "/round" {:params data
:response-format :transit
:format :transit
:handler #(js/alert (= data %))}))
这是相关的服务器代码:
(defroutes main-routes
(POST "/round" {p :params} (do (prn p)
(response p))))
(def app
(-> main-routes
(wrap-transit-body {:keywords? true})
(wrap-transit-response)
(wrap-transit-params)))
我期待这个服务器代码回显数据结构。浏览器开发者工具显示服务器响应实际上是 400 并且这个纯文本:“请求正文中的格式错误的传输”。prn
在服务器端,路由中的函数不会记录任何内容。
有人知道如何解决这个问题吗?