【问题标题】:How to ensure a middleware is not wrapped twice?如何确保中间件不被包裹两次?
【发布时间】:2015-05-29 13:07:04
【问题描述】:

如何确保中间件不会被应用两次?

我的应用程序正在使用bidi,并且我的路由和处理程序是分开的。所以我的最终环处理程序有一些中间件(例如wrap-paramswrap-session),我的一些处理程序有自己的自定义中间件。我可以手动监视我的主处理程序的构造函数和我的处理程序文件,但我宁愿不依赖手动警惕。

是否有有助于更好地管理中间件的设计?还是某个图书馆?

我的结构是这样的:

1. routes                                 2. handlers
      \                                      /
       \                                    /
    3. (bidi.ring/make-handler routes handlers)

可以在2 中包装一些内容,然后在3 中再次包装。

3 实际上是一个componentmake-handler 在其start 中被调用。 handler & routes 来自3 组件的依赖。我考虑过使用wrap-middlewares 方法向12 添加另一个协议,但是中间件的顺序很重要。例如(buddy-auth's)wrap-authentication 取决于 wrap-sessionwrap-params

【问题讨论】:

    标签: clojure middleware ring


    【解决方案1】:

    对于您控制的中间件,它相当简单,您可以让每个中间件在请求中添加一个带有其名称的密钥,如果该密钥在它收到的任何请求。对于您无法控制的中间件,我想他们只能盯着代码并认真思考,或者正如您所说的“手动警惕”。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2019-05-03
      • 2012-09-08
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多