我想用额外的决策扩展现有的defresource。
假设我有(请注意,这不是实际的代码,而是一个示例来展示我想要做的事情):
(defresource get-something [{:keys [service]} ctx]
resource-defaults
:allowed-methods [:get]
:authorized? (authorized? ctx)
:exists? (fn [_]
true)
:handle-ok (fn [{:keys [::result]}]
result))然后我想用一个额外的决定来“扩展”get-something,例如
malformed? (fn [_] false)我所说的“扩展”是指在不修改get-something的情况下将决策添加到处理程序的工作流中,从而获得使用所有决策的资源。
(resource
(get-something service ctx)
malformed? (fn [_] false))这有可能吗?
发布于 2019-07-05 16:01:55
最后,资源定义是映射和数据,可以这样操作:
(def get-something
(merge resource-defaults
{ :allowed-methods [:get]
:authorized? #authorized?
:exists? true
:handle-ok ::result}))
(defresource get-something-handler get-resource)
(defresource get-something-extended-handler get-resource :malformed? false)
;; or
(defresource get-something-extended-handler
(merge get-resource {:malformed? false})https://stackoverflow.com/questions/56850974
复制相似问题