java @RequestBody中是否可能有多个对象?

xdyibdwo  于 2022-12-10  发布在  Java
关注(0)|答案(2)|浏览(515)

是否可以像这样将多个对象从Sping Boot 传递到@RequestBody?

public void storeSecretKey(@RequestBody final KeyStoreRequest keyStoreRequest, @RequestBody final SecretKeyDTO secretKeyDTO) throws CertificateException, IOException, NoSuchAlgorithmException, KeyStoreException, NoSuchProviderException {

还是我必须编写一个 Package 器类,将我需要从中获取数据的两个对象组合起来?

wfveoks0

wfveoks01#

@RequestBody将被用于读取HTTP请求的主体,其仅为1。
然后,在http请求的主体内可以包含多个对象,但所有对象都应属于http请求的同一主体。
如果我们讨论json,那么http主体请求的形式将是

{
   object1: { },
   object2: { },
   ...
}

因此,您只能有1个@RequestBody,其中可以包含多个嵌套对象,如object1object2
对你来说

@Getter
@Setter
public class WrapperRequestExample {  
     private KeyStoreRequest keyStoreRequest;
     private SecretKeyDTO secretKeyDTO;
}

然后您的控制器将

public void storeSecretKey(@RequestBody WrapperRequestExample wrapperRequestExample) {
        wrapperRequestExample.getKeyStoreRequest(); //access keyStoreRequest
        wrapperRequestExample.getSecretKeyDTO(); //access secretKeyDTO
    }
wribegjk

wribegjk2#

您可以将多个主体参数添加到路径操作函数中,即使一个请求只能有一个主体。

相关问题