繁体   English   中英

Spring rest controller 与@RequestBody 和@RequestParam

[英]Spring rest controller with @RequestBody and @RequestParam

嗨,我正在尝试实现一个 rest post 方法,它将一个文件作为参数,json 主体和一些其他细节,下面是方法语法:

@PostMapping(path = "/v1/cust-advice", produces = "application/json")
public ResponseEntity<ResponseMessage> uploadFile(@RequestBody CustomerData custData,
        @RequestParam("file") MultipartFile file) {

这可以在 spring 中完成吗,如果可以,我如何使用 postman 调用此方法。我试过但得到错误:当前请求不是多部分请求

正如@M.Deinum 所建议的那样,您不能将文件作为“参数”发送。 文件作为多部分正文的一部分发送,因此@RequestBody将包括包括文件在内的所有内容(所有部分)。

相反,您可以使用@RequestPart将 JSON 和文件声明为单独的“部分”:

@PostMapping(value = "/upload", consumes = { "multipart/form-data" }, produces = "application/json")
public void upload(@RequestPart(name = "file", required = true) MultipartFile file,
        @RequestPart(name = "data", required = true) CustomerData data) {

注意@PostMapping consumes和两个“部分”的name

在 Postman select “正文”下的“表单数据”中。 添加两个与@RequestPart同名的条目(在本例中为“文件”和“数据”)。 在键列(有点隐藏)中有一个选择器,您可以在其中选择“文件”和“文本”。 当您选择“文件”时,文件选择器会出现在值列中。 将 JSON 粘贴到“数据”行的值列中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM