2015-10-13 54 views
1

使用的Compojure的API,如:如何訪問compojure-api處理程序中的會話?

(defapi app 
    (swagger-ui) 
    (swagger-docs 
    {:info {:title "Sample api"}}) 

    (GET* "/" [] 
    :no-doc true 
    (ok "hello world")) 

    (context* "/api" [] 
    :tags ["thingie"] 

    (GET* "/plus" [] 
     :return  Long 
     :query-params [x :- Long, {y :- Long 1}] 
     :summary  "x+y with query-parameters. y defaults to 1." 
     (ok (+ x y))))) 

我怎麼進入環會話?

+0

我建議檢查'defapi'擴展到什麼。尤其是「重組」部分擴展到的內容。 – muhuk

回答

0

基於從這裏文檔:https://github.com/metosin/compojure-api/blob/master/src/compojure/api/core.clj,defapi是下面的宏:

(defmacro defapi 
    [name & body] 
    `(def ~name 
    (api [email protected]))) 

,你可以看到它只是定義了api宏調用的結果VAR(和api創建一個環處理)

所以你可以使用它,而defapi,和卷繞環會話:

(def app 
    (-> (api (swagger-ui) 
      (swagger-docs 
      {:info {:title "Sample api"}}) 

      (GET* "/" [] 
      :no-doc true 
      (ok "hello world")) 

      (context* "/api" [] 
      :tags ["thingie"] 

      (GET* "/plus" [] 
      :return  Long 
      :query-params [x :- Long, {y :- Long 1}] 
      :summary  "x+y with query-parameters. y defaults to 1." 
      (ok (+ x y)) 
     ring.middleware.session/wrap-session)) 

我想以後你笑可以正常使用會話,如https://github.com/ring-clojure/ring/wiki/Sessions中所述。還沒有測試它,但我認爲這是正確的方式