我正在写一个clojure函数,当我使用的是 defn
来定义它,但当我使用 defresource
. 我猜测这与 :as-response
我正在使用的键,但我不知道如何解决这个问题,有什么想法吗?
(defn function-name []
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (my function is here))
使用defresource时出错: "错误的参数数(2)传递给...... "我传递了0个参数,使用defn可以正常工作。
的 defn
等于您所定义的
(defn function-name
[]
(do
:allowed-methods
[:get]
:available-media-types
["application/json"]
:as-response
(...)))
由于 do
表达式是表达式中的最后一种形式--而且关键字和向量没有任何副作用--函数定义相当于
(defn function-name
[]
(...))
你所拥有的是一个0参数的奇异函数。这个 :as-response
和其他关键词向量没有任何作用。
观察 文件 对于Liberator来说,当使用一个2参数的奇偶校验函数时,该库需要一个2参数的奇偶校验函数。:as-response
. 另外,根据 关于资源的文件 你只需要传一个参数向量给 defresource
如果你想要一个参数化的资源。所以你的资源应该定义为
(defresource function-name
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (fn [d ctx] ...))