发送带有多个输入的大JSON



我正在尝试上传一些具有大型JSON主体的文件,

以前(当没有文件上传时),我使用@RequestBodyfor JSON,它会自动将我的请求解析为对象,就像下面这样。

@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody ) 
{
myService.uploadData(jsonBody)
}

但是现在因为我试图实现上传功能,我发现文件和JSON可以通过@RequestParameter发送,但正如这里提到的,在@RequestParam中发送大型JSON并不是一个好主意,因为它附加了URL。

这就是我要做的,

@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody , @RequestParam("file") MultipartFile file ) 
{
myService.uploadData(jsonBody)
}

我读到,你必须要么传递请求体或请求参数(在体),如果它是正确的是什么是这个替代方案?

您也可以将JSON作为请求参数发送,这应该非常简单。然后在控制器中手动将其转换为传输对象。

@PostMapping("/TestEndPoint")
public void uploadData(
@RequestParam("file") MultipartFile file1, 
@RequestParam("jsonFile") MultipartFile file2) throws IOException {
String objString = new String(file2.getBytes());
MyClass jsonBody = new ObjectMapper().readValue(objString, MyClass.class);        
myService.uploadData(jsonBody);
}

发送请求的客户端只需要将JSON转换为字节并将其作为请求参数添加到请求中。我没有测试代码,但我猜它应该是这样工作的。

最新更新