Spring Restful API:使用multipart/form-data发送带有json数据的文件

nsc4cvqm  于 2023-02-28  发布在  Spring
关注(0)|答案(1)|浏览(393)

我正在用spring构建一个restful API,并尝试使用postman发送一个包含multipart/form-data的文件。
这是我的控制器:

@PostMapping
public ResponseEntity<Object> create(
  @PathVariable Integer entityId,
  @Validated FormDataRequest formData
) {
  return new ApiResponseHandler(formData.getFile().getOriginalFilename(), HttpStatus.OK).response();
}

下面是DTO:

@Data
public class FormDataRequest {
  private String name;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private LocalDate startDate;
  
  private MultipartFile file;

  private List<EntryDTO> entries;
}

1.我的第一个问题是,我必须在请求中以camel的形式发送"startDate",以使其序列化。我希望能够以Snake的形式(start_date)发送它,以便它与我的API和Jackson配置的其余部分保持一致。
1.然后,我遇到了一个关于"entries"属性的序列化问题。以下是错误:
未能将类型为"java.lang.String"的属性值转换为属性"entries"所需的类型"java.util.List";嵌套异常是java. lang.非法状态异常:无法将类型为"java. lang. String"的值转换为属性"entries [0]"所需的类型"EntryDTO":找不到匹配的编辑器或转换策略
我试着用postman发送一个JSON:

kgsdhlau

kgsdhlau1#

对于第一个问题,可以在setter方法中使用@JsonSetter(“start_date”)。
对于你的第二个问题,我通常使用@RequestPart MultipartFile文件,@RequestPart Employe作为例子,但是我见过像你这样直接Map到对象的代码,我不能真正解决这个问题,但是你可以尝试用ObjectMapper显式Map到你的列表

相关问题