我要扩展现有的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))
有可能吗?
答案 0 :(得分:0)
最后,资源定义是地图和数据,可以这样操作:
(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})