compojure-api中body和body-params有什么区别?

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

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

(POST* "/register" []
    :body [user UserRegistration]
    (ok)))
Run Code Online (Sandbox Code Playgroud)

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

这两者有什么区别?使用一个与另一个有什么含义?

nbe*_*ger 5

唯一的区别在于如何指定params(之后进行解构):

body:

读取body-params为增强型let.第一个参数是let 符号,第二个是要coerced!反对的Schema .

例: :body [user User]

body-params:

用管道letk符号重构身体 - 参数.

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

视情况而定,您可能更喜欢其中一种.在两种情况下PARAMS(user在第一种情况下,idname在第二个)将在范围为身体.