在使用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?
答案 0 :(得分:8)
它与受支持的内容类型有关:
form-params
旨在与内容类型" application / x-www-form-urlencoded" (表格)body-params
旨在用于与其他内容类型(edn,json,transit等)同时位于正文中的参数。您希望使用:body-params
从您的clojurescript或移动应用中使用它。
使用form-params
或body-params
将影响参数的验证方式,从中获取请求的哪一部分,以及如果使用swagger扩展,将如何生成swagger.json文件。
compojure-api中的许多内容很难理解,如果不将它们映射到招摇的概念中。 Looking into the code我们发现了像#"消费"或" formData"可以在the swagger parameter specs中找到。