首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在compojure-api处理程序中访问会话?

如何在compojure-api处理程序中访问会话?
EN

Stack Overflow用户
提问于 2015-10-13 23:50:44
回答 1查看 330关注 0票数 1

使用compojure-api,如下所示:

代码语言:javascript
复制
(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)))))

如何访问ring-session?

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 23:35:39

基于此处的文档:https://github.com/metosin/compojure-api/blob/master/src/compojure/api/core.clj,defapi是以下宏:

代码语言:javascript
复制
(defmacro defapi
  [name & body]
  `(def ~name
     (api ~@body)))

正如您所看到的,它只是使用api宏调用的结果定义了var (并且api创建了一个环处理程序)

所以你可以在不使用defapi的情况下使用它,并包装振铃会话:

代码语言:javascript
复制
(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中所述。我还没有测试过,但我认为这是正确的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33107175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档