Springboot接口多个DTO入参的Postman上传方式

发表于:2023-4-21 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Recently祝祝    来源:稀土掘金

分享:
  此解决方式在企业中有所应用,适合Java初级开发学习,参考。如果你对文章有更好的建议或者意见,欢迎在评论区指出。
  在Java中使用Spring Boot框架时,可以同时使用多个DTO作为方法参数。
  DTO(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");
  }
  一个方法只是用一个 @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 请求中。
  发送 API 请求并等待响应。
  检查响应是否成功,并确保 DTO 对象的属性已被正确地填充。
  需要注意的是,使用 Postman 测试 API 时,您需要确保请求体中的 JSON 数据与 DTO 对象的属性名称完全匹配,以便 Spring Boot 可以正确地解析数据并将其填充到 DTO 对象中。另外,您还需要确保 API 的地址和端口与您的 Spring Boot 应用程序中的地址和端口匹配。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号