[英]Spring controller can accept ZonedDatedTime as @RequestParam but not @RequestBody
[英]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.