gpt4 book ai didi

clojure - 分解环形中间件场景

转载 作者:行者123 更新时间:2023-12-01 11:34:44 25 4
gpt4 key购买 nike

Ring 非常时尚,并且有一些非常合理的中间件默认值。

当我通过 leiningen (lein) 制作一个新应用时,我最终在我的路由器/处理程序中得到了类似的东西

(def app
(wrap-defaults app-routes site-defaults))

https://github.com/ring-clojure/ring-defaults

现在我想添加更多中间件(cemerick/friend),这样我就可以做一些事情,比如登录验证。

那么,我如何将上面的内容翻译成更让人联想到环形中间件“堆栈”的东西,例如页面底部的 https://github.com/ring-clojure/ring-defaults/blob/master/src/ring/middleware/defaults.clj

(def app
(-> handler
(wrap-anti-forgery)
(wrap-flash)
(wrap-session)
(wrap-keyword-params)
(wrap-resource)
(wrap wrap-file)))

最佳答案

因为 ring 只是使用中间件的函数组合,你可以简单地将 friend 包装在调用周围以包装默认值:

(def app 
(my-additional-middleware
(wrap-defaults app-routes site-defaults)
arguments to my additional middleware))

或者你可以线程化它(例如当你有多个中间件时):

(def app
(-> (wrap-defaults app-routes site-defaults)
(friend-stuff arg arg)
(other-middleware arg arg arg))

正确获取中间件的顺序仍然取决于您:-/

关于clojure - 分解环形中间件场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28467872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com