当前位置: 首页 > 知识库问答 >
问题:

json中的多部分文件和嵌套对象来测试POSTMAN中的post请求?

叶英哲
2023-03-14

想在POSTMAN中测试post请求。

public enum TimeUnit {

    HOURS("hours"),
    MINUTE("mins");

    private String value;

    public static TimeUnit get(String text) {
        return Arrays.stream(TimeUnit.values())
                     .filter(a -> Objects.equals(a.getValue(), text))
                     .findFirst()
                     .orElse(null);
    }
}
public final class SchoolTimeTable {

  private Double value;
  private TimeUnit unit;
 
  public SchoolTimeTable (double value, TimeUnit unit) {
      this.value = value;
      this.unit=unit;
  }
}
public class SchoolDto {
    private String name;
    private String address;
    private MultipartFile profileImage;
    private MultipartFile[] galleryImages;
    private SchoolTimeTable openCloseTime;
 }

Spring MVC控制

@PostMapping(value = "/schoolInfo", produces = { MediaType.APPLICATION_JSON_VALUE }) 
public ResponseEntity<Object> saveSchoolInfo( @Parameter(required = true, schema = @Schema(implementation = SchoolDto.class)) SchoolDto schoolDto) throws IOException, InterruptedException {  
   ...
}

我想送SchoolDto(邮递员:尸体-

请帮忙。

共有2个答案

越胤
2023-03-14

当我使用多部分/表单数据时,我使用的是Spring Boot 2.0。x、 Java 8和使用相同方法=POST

您需要正确实施以下几点。也许这可以帮助您:

@RequestMapping(value = MEUVOUCHER_FILE, method = POST, consumes =  "multipart/form-data", produces = APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(code = CREATED)
public ObjectResponse<MEUVOUCHERFileRetrievalDto> createMEUVOUCHERFile(
    @RequestPart("MEUVOUCHERFile") MultipartFile MEUVOUCHERFile,
    @ApiParam(name = "metadata", value = "{ \"MEUVOUCHERTypeId\" : 0, \"relatedContentId\" : 0, \"expireDate\" : \"datetime\" }", required = true)
    
金慈
2023-03-14

我认为您不应该在Application/json请求中上传文件,为此您应该使用multipart/form-data请求。您的请求可能有三个部分proileImageGalleryImagesSchool Info

SchoolDto类中删除proileImageGalleryImages

修改方法签名以支持多部分请求

@PostMapping(value = "/schoolInfo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
public ResponseEntity<Object> saveSchoolInfo(@RequestPart(value = "profileImage") MultipartFile profileImage, @RequestPart(value = "galleryImages") MultipartFile[] galleryImages, @RequestPart(value = "schoolInfo") SchoolDto schoolInfo) throws IOException, InterruptedException {  
   ...
}

此外,您还可以使用RestDocumentationExpress实现@SpringBootTest单元测试,以检查您的代码是否有效并生成一个curl请求示例,以帮助您了解如何向您的endpoint发出请求

参见sb-mvc-multipart-demo

 类似资料:
  • 使用Postman,我可以用表单数据在请求中附加文件,我也可以用原始格式发送嵌套的JSON对象,但是我如何做到这两个:用文件发送嵌套结构的数据,例如:

  • 我有一个REST api,它接受嵌套json的数据,包括多部分文件 在通过postman测试REST api时,我遇到了问题。 我不知道如何发送我需要的各种类型的数据——多部分/表单数据文件和嵌套的json。 我在其他项目中分别使用了REST,但我无法将它们合并到一个请求中。 要使用多部分/表单数据,我必须在正文中选择表单数据,然后从键字段的下拉列表中选择文件,单击值字段上的选择文件按钮,然后选择

  • 我试图将POST请求中的嵌套json对象发送到我的spring REST API。 对象java代码 } 我加了逗号,没有变化

  • 我需要发送一个视频文件和JSON对象在放心的post调用。 我不能在放心地使用multipart时使用application/json。我显式地硬编码了表单param中的值,并以multipart的形式发送了媒体文件,现在它工作得很好。 如何在单个内部对象中发送所有表单参数数据。

  • 我有一个带有嵌套字段的JSON: 我正在使用JSONPATH从嵌套中获取。 我已经将我的JSON文本粘贴到了http://jsonpath.com/这个网站上;并且在使用了这一行之后: 我得到了这个: 使用此行后: 我得到了这个: 我尝试返回(输出)的内容如下: 但是我找不到合适的语法来将这两个组合在一行中,并用一个JSONPATH查询返回它们。

  • 我使用Jhipster,这是一个控制器方法: 控制器: 本质上,我想发布一个文件和一个json对象。 请求负载的外观如下: 这是Spring Boot日志消息: 已解决的由处理程序执行引起的异常:org.springframework.web.multipart.support.MissingServletRequestPartException:所需的请求部分“file”不存在 将content