我正在寻找一种在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并且这个纯文本:"请求正文中的格式错误的Transit。"在服务器端,路由中的prn
函数不会记录任何内容。
有人知道如何解决这个问题吗?