:body-params vs :form-params in compojure-api



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

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

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

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

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

  • form-params旨在与内容类型"application/x-www-form-urlencoded"(表单)一起使用
  • body-params旨在用于也将与其他内容类型(edn, json, transit等)一起位于主体中的参数。

您将希望使用:body-params从您的clojurescript或移动应用程序中消费它。

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

如果不将compojure-api中的许多东西映射到swagger中的概念,就很难理解它们。查看代码,我们可以在swagger参数规范中找到像"consume"或"formData"这样的swagger术语。

最新更新