Liberator 的 Clojure defresource 参数 arity 错误
Clojure defresource argument arity error with Liberator
我正在编写一个 clojure 函数,当我使用 defn
定义它时它工作正常,但是当我使用 defresource
定义它时它会抛出 arity 错误。我怀疑这与我使用的 :as-response
键有关,但我不知道如何修复它。
有任何想法吗?
我的代码:
(defn function-name []
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (my function is here))
使用 defresource 时出错:"Wrong number of args (2) passed to ... " 我传递了 0 个参数,使用 defn 可以正常工作。
你定义的defn
相当于
(defn function-name
[]
(do
:allowed-methods
[:get]
:available-media-types
["application/json"]
:as-response
(...)))
由于 do
表达式的值是表达式中的最后一个形式——关键字和向量没有任何副作用——函数定义等同于
(defn function-name
[]
(...))
你拥有的是一个 0 参数元数函数。 :as-response
和其他关键字/向量什么都不做。
查看 documentation for Liberator, the library expects a 2-parameter arity function when using :as-response
. Also according to the documentation on resources 如果您想要参数化资源,只需将参数向量传递给 defresource
。所以你的资源应该定义
(defresource function-name
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (fn [d ctx] ...))
我正在编写一个 clojure 函数,当我使用 defn
定义它时它工作正常,但是当我使用 defresource
定义它时它会抛出 arity 错误。我怀疑这与我使用的 :as-response
键有关,但我不知道如何修复它。
有任何想法吗?
我的代码:
(defn function-name []
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (my function is here))
使用 defresource 时出错:"Wrong number of args (2) passed to ... " 我传递了 0 个参数,使用 defn 可以正常工作。
你定义的defn
相当于
(defn function-name
[]
(do
:allowed-methods
[:get]
:available-media-types
["application/json"]
:as-response
(...)))
由于 do
表达式的值是表达式中的最后一个形式——关键字和向量没有任何副作用——函数定义等同于
(defn function-name
[]
(...))
你拥有的是一个 0 参数元数函数。 :as-response
和其他关键字/向量什么都不做。
查看 documentation for Liberator, the library expects a 2-parameter arity function when using :as-response
. Also according to the documentation on resources 如果您想要参数化资源,只需将参数向量传递给 defresource
。所以你的资源应该定义
(defresource function-name
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (fn [d ctx] ...))