您的位置:首页 > Web前端 > JavaScript

Clojure Web编程 json格式返回

2013-04-10 17:23 316 查看
在用Clojurescirpt来写前端之后,我终于碰上了跟后台交互的过程。
首先要解决问题的是,通过jquery传输到后台的数据怎么接受。

对于这一点,用Compojure已经解决这点问题。它是一个Ring的特定领域接口。(这少我是这么称呼它的。)

那么怎么返回json的格式的处理呢?

Compjure自带的是字符串返回格式。不是json样式。所以需要自己动手。
方法1:进行json格式的处理,自己写函数。对于比较简单的数据结构可以这样,但是我比较懒。
方法2:用中间件来使用。(Clojure的中间件更多的是一种在函数调用链上面嵌入一节操作的过程,我的意思是,在clojure中的操作更多的是一种函数多层嵌套调用,数据经过层层函数最终出来,既所得结果。)原本想使用Compojure文档里面推荐的中间件:ring-middleware-format,但是后来看看它的文档太多。我耸了。然后就用了ring-json中间件。该中间件就四个函数。很好使用,就是在你输出的时候,记得多嵌套一个函数就行。

(ns blackmamba.routes
(:use
compojure.core
blackmamba.views
[hiccup.middleware :only (wrap-base-url)]
ring.middleware.json ; ring-json的中间件
ring.util.response ; 工具函数
)
(:require [compojure.route :as route] [compojure.handler :as handler] [compojure.response :as response]))

; 路由设置
(defroutes main-routes
(GET "/" [] (index-page)) ; 首页
(GET "/loginAuth" [password username]
(response {"账户:" username "密码:" password}) ; 返回的时候一定要用映射格式
)
(route/resources "/") ; 资源
(route/not-found "网页没有找到!")) ; 没有找到

(def app ; 应用入口
(-> (handler/site main-routes)
(wrap-base-url)
(wrap-json-response) ; 输入之前包装json
))


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: