Clojure Web编程 json格式返回

在用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
        ))

 

posted @ 2013-04-10 17:23 snakevash 阅读(...) 评论(...) 编辑 收藏