首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在不修改资源的情况下用额外的决策来扩展liberator资源?

有没有一种方法可以在不修改资源的情况下用额外的决策来扩展liberator资源?
EN

Stack Overflow用户
提问于 2019-07-02 19:00:00
回答 1查看 29关注 0票数 0

我想用额外的决策扩展现有的defresource

假设我有(请注意,这不是实际的代码,而是一个示例来展示我想要做的事情):

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

代码语言:javascript
复制
malformed? (fn [_] false)

我所说的“扩展”是指在不修改get-something的情况下将决策添加到处理程序的工作流中,从而获得使用所有决策的资源。

代码语言:javascript
复制
(resource
    (get-something service ctx)
    malformed? (fn [_] false))

这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-05 16:01:55

最后,资源定义是映射和数据,可以这样操作:

代码语言:javascript
复制
(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})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56850974

复制
相关文章

相似问题

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