compojure-api 中的 body 和 body-params 有啥区别?

Posted

技术标签:

【中文标题】compojure-api 中的 body 和 body-params 有啥区别?【英文标题】:What is the difference between body and body-params in compojure-api?compojure-api 中的 body 和 body-params 有什么区别? 【发布时间】:2015-10-24 08:31:00 【问题描述】:

在 compojure-api 中,我注意到这两种指定资源 API 的方式:

(POST* "/register" []
    :body [user UserRegistration]
    (ok)))

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

这两者有什么区别?使用一个与另一个有什么影响?

【问题讨论】:

【参考方案1】:

唯一的区别在于参数的指定方式(以及之后的解构方式):

body:

将正文参数读入增强的let。第一个参数是let 符号,第二个是 coerced! 反对的 Schema。

示例: :body [user User]

body-params:

使用管道letk 表示法重组 body-params。

示例::body-params [id :- Long name :- String]

根据情况,您可能更喜欢其中一种。在这两种情况下,参数(user 在第一种情况下,idname 在第二种情况下)都将在正文的范围内。

【讨论】:

以上是关于compojure-api 中的 body 和 body-params 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CORS 添加到 compojure-api 应用程序?

compojure-api 的可选查询参数(具有默认值)

Postman-----将 A 请求中 response Body 中的参数值传入到下一个请求 B 的 request body 中作为参数发送请求

在一个页面中用JS获取另一个网页中的某个id

一个js方法中怎么调用另一个js文件

UG二次开发中的 trim_body命令不能使用曲面剪切吗?