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

pup*_*eno 7 clojure swagger plumatic-schema compojure-api

使用compojure-api创建API时,使用body-params和:form-params有什么区别?例如:

(POST* "/register" []
    :body-params [username :- String,
                  password :- String]
    (ok)))
Run Code Online (Sandbox Code Playgroud)

VS

(POST* "/register" []
    :form-params [username :- String,
                  password :- String]
    (ok)))
Run Code Online (Sandbox Code Playgroud)

哪一个应该用于单页clojurescript应用程序和/或本机移动应用程序将使用的API?

nbe*_*ger 8

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

  • form-params 旨在与内容类型"application/x-www-form-urlencoded"(表格)一起使用
  • body-params 用于参数,这些参数也将与其他内容类型(edn,json,transit等)一起位于正文中.

您将要使用:body-params它从clojurescript或移动应用程序中使用它.

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

compojure-api中的许多内容如果不将它们映射到招摇的概念中就很难理解.查看代码,我们可以找到swagger参数规范 "消耗"或"formData"等文字.