compojure-api中的:body-params和:form-params有何区别?

8
在使用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个回答

12

这与支持的内容类型有关:

  • form-params 旨在与 content-type "application/x-www-form-urlencoded" (表单)一起使用
  • body-params 旨在与其他内容类型(edn,json,transit等)一起使用的参数一起放在请求体中。

您将想要使用 :body-params 来从您的Clojurescript或移动应用程序中调用它。

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

在没有将它们映射到swagger概念的情况下,compojure-api中的许多东西都很难理解。通过查看代码,我们发现像“consumes”或“formData”这样的swagger术语可以在swagger参数规范中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接