:body-params vs:compojure-api中的form-params

时间:2015-08-01 22:41:41

标签: clojure swagger plumatic-schema compojure-api

在使用compojure-api创建API时,使用:body-params和:form-params之间的区别是什么?例如:

(POST* "/register" []
    :body-params [username :- String,
                  password :- String]
    (ok)))

VS

(POST* "/register" []
    :form-params [username :- String,
                  password :- String]
    (ok)))

哪一个应该用于单页clojurescript应用和/或原生移动应用所使用的API?

1 个答案:

答案 0 :(得分:8)

它与受支持的内容类型有关:

  • form-params旨在与内容类型" application / x-www-form-urlencoded" (表格)
  • body-params旨在用于与其他内容类型(edn,json,transit等)同时位于正文中的参数。

您希望使用:body-params从您的clojurescript或移动应用中使用它。

使用form-paramsbody-params将影响参数的验证方式,从中获取请求的哪一部分,以及如果使用swagger扩展,将如何生成swagger.json文件。

compojure-api中的许多内容很难理解,如果不将它们映射到招摇的概念中。 Looking into the code我们发现了像#"消费"或" formData"可以在the swagger parameter specs中找到。