我正在编写一个clojure函数,当我使用defn定义它时,它工作得很好,但是当我使用defresource定义它时,它抛出了arity错误。我怀疑这与我正在使用的:as-response密钥有关,但我不知道如何修复它。有什么想法吗?我的代码:
(defn function-name []
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (my function is here))使用defresource时出错:“传递给的参数数(2)错误...”我正在传递0个参数,使用defn可以很好地工作。
发布于 2020-05-20 11:45:43
您定义的defn等同于
(defn function-name
[]
(do
:allowed-methods
[:get]
:available-media-types
["application/json"]
:as-response
(...)))由于do表达式的值是表达式中的最后一种形式-而关键字和向量没有任何副作用-函数定义等效于
(defn function-name
[]
(...))你得到的是一个0参数的函数。:as-response和其他关键字/向量什么也不做。
查看Liberator的documentation,当使用:as-response时,库需要一个2参数的参数函数。此外,根据documentation on resources,如果您想要参数化的资源,只需向defresource传递一个参数向量。所以你的资源应该被定义
(defresource function-name
:allowed-methods [:get]
:available-media-types ["application/json"]
:as-response (fn [d ctx] ...))https://stackoverflow.com/questions/61872059
复制相似问题