首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liberator的Clojure资源参数缺省错误

Liberator的Clojure资源参数缺省错误
EN

Stack Overflow用户
提问于 2020-05-18 22:36:13
回答 1查看 79关注 0票数 0

我正在编写一个clojure函数,当我使用defn定义它时,它工作得很好,但是当我使用defresource定义它时,它抛出了arity错误。我怀疑这与我正在使用的:as-response密钥有关,但我不知道如何修复它。有什么想法吗?我的代码:

代码语言:javascript
复制
(defn function-name []
  :allowed-methods [:get]
  :available-media-types ["application/json"]
  :as-response (my function is here))

使用defresource时出错:“传递给的参数数(2)错误...”我正在传递0个参数,使用defn可以很好地工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 11:45:43

您定义的defn等同于

代码语言:javascript
复制
(defn function-name 
  []
  (do
    :allowed-methods 
    [:get]
    :available-media-types 
    ["application/json"]
    :as-response 
    (...)))

由于do表达式的值是表达式中的最后一种形式-而关键字和向量没有任何副作用-函数定义等效于

代码语言:javascript
复制
(defn function-name 
  []
  (...))

你得到的是一个0参数的函数。:as-response和其他关键字/向量什么也不做。

查看Liberator的documentation,当使用:as-response时,库需要一个2参数的参数函数。此外,根据documentation on resources,如果您想要参数化的资源,只需向defresource传递一个参数向量。所以你的资源应该被定义

代码语言:javascript
复制
(defresource function-name
  :allowed-methods [:get]
  :available-media-types ["application/json"]
  :as-response (fn [d ctx] ...))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61872059

复制
相关文章

相似问题

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