相关文章推荐
逼格高的跑步鞋  ·  gnupg,gnupg2 and ...·  1 年前    · 
不拘小节的电池  ·  cocos2dx ...·  1 年前    · 
侠义非凡的苦瓜  ·  spring - ...·  1 年前    · 


在Java中使用Spring Boot框架时,可以同时使用多个DTO作为方法参数。

TO(Data Transfer Object)是一个常见的设计模式,用于封装数据传输对象。它通常用于将数据从一个层传递到另一个层,例如将数据从服务层传递到控制器层。

在Spring Boot中,使用DTO作为方法参数可以使代码更具可读性和可维护性。例如,如果您需要从前端传递多个参数到控制器层,则可以将这些参数封装到一个DTO中,并在控制器方法中使用该DTO作为参数。

以下是一个示例代码,演示如何在Spring Boot中同时使用两个DTO作为方法参数:

TraumaTaskController

@PostMapping("/createUser")
public ResponseEntity<String> query(@RequestBody @Valid ConnectioonDTO connectioonDTO) {
   //处理用户和地址信息
   return ResponseEntity.ok("User and address created successfully");
}

java postMapping 两个参数 java中post请求带多个参数_postman

一个方法只是用一个 @RequestBody

如果一个方法里边使用了两个 @RequestBody或出现错误

I/O error while reading input message; nested exception is java.io.IOException: Stream closed

因为每个方法只允许使用一个 @RequestBody。使用 @RequestBody Spring 将传入的请求主体转换为指定的对象(最后关闭表示主体的流),因此尝试在同一方法中第二次使用 @RequestBody 是没有意义的,因为流已经关闭。

所以要将多个DTO组合起来。
ConnectioonDTO

@Data
public class ConnectioonDTO implements Serializable {
    @ApiModelProperty(value = "任务ConditionDTO")
    private TraumaTaskConditionDTO traumaTaskConditionDTO;
    @ApiModelProperty(value = "页面分页请求参数")
    private PageDTO pageDTO;
}

在上面的示例代码中,控制器方法使用@RequestBody注解将两个不同的DTO(TraumaTaskConditionDTO 和PageDTO )合并到一个作为参数传递。使用这种方式,可以方便地传递多个DTO,并且可以确保控制器方法的参数清晰明确。

需要注意的是,当使用多个DTO作为方法参数时,需要确保这些DTO的属性名称与前端请求的JSON数据属性名称一致。否则,Spring Boot将无法正确地解析请求并将数据注入到DTO中。

多个DTO的入参怎么使用Postman测试呢?

由于 query方法的参数类型是 TraumaTaskConditionDTO 和PageDTO,因此在 Postman 中测试时,需要将这两个对象的数据都包含在请求体中。可以按照以下步骤操作:

打开 Postman 并选择 POST 请求方式。
在请求 URL 处输入 API 的地址,例如:http://localhost:8080/createUser。
在请求体中选择 “raw” 并选择 JSON 格式。
在请求体中输入 JSON 数据,与 TraumaTaskConditionDTO 和PageDTO对象的属性名称匹配。例如:

{
  "traumaTaskConditionDTO": {
  	"keyword":"",
  	"startTime":null,
  	"endTime":null,
    "status": "1",
    "areaList": null,
    "name":"邱善平",
    "RegisterNo":"457457567567",
    "hospitalNo":"4746756757",
    "dcjg":""
  "pageDTO": {
    "pageNum": 5,
    "pageSize": 10
}

在上面的示例中,我们使用了两个嵌套的 JSON 对象,分别表示TraumaTaskConditionDTO 和PageDTO对象。这样可以将两个对象的数据都传递到一个 API 请求中。

java postMapping 两个参数 java中post请求带多个参数_数据_02


发送 API 请求并等待响应。

检查响应是否成功,并确保 DTO 对象的属性已被正确地填充。

需要注意的是,使用 Postman 测试 API 时,您需要确保请求体中的 JSON 数据与 DTO 对象的属性名称完全匹配,以便 Spring Boot 可以正确地解析数据并将其填充到 DTO 对象中。另外,您还需要确保 API 的地址和端口与您的 Spring Boot 应用程序中的地址和端口匹配。