8

在使用 compojure-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?

4

1 回答 1

10

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

  • form-params旨在与内容类型“application/x-www-form-urlencoded”(一种形式)一起使用
  • body-params旨在用于也将位于具有其他内容类型(edn、json、transit 等)的正文中的参数。

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

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

compojure-api 中的许多东西如果不将它们映射到 swagger 中的概念,就很难理解。查看代码,我们发现可以在swagger 参数 specs中找到像“consumes”或“formData”这样的招摇术语。

于 2015-08-01T22:58:51.620 回答