java - 在 RestAPI Post 请求中映射为参数
问题描述
我创建了一个带有Map<String, Integer>
参数的 API,如下所示:
@RequestMapping(value = "upload", method = RequestMethod.POST)
public ResponseEntity<String> handleContactsFileUpload(@RequestParam("file") MultipartFile file,
@RequestParam("name") String name,
@RequestParam("campaignAppItemId") Long campaignAppItemId,
@RequestParam("fileColumnHeaders") Map<String,Integer> fileColumnHeaders) throws Exception {
if (file == null)
return new ResponseEntity<>("No file uploaded", HttpStatus.BAD_REQUEST);
contactService.handleContactsFile(file, name, campaignAppItemId,fileColumnHeaders);
return new ResponseEntity<>("File uploaded successfully", HttpStatus.OK);
}
我正在尝试通过 Postman 调用它:
我在屏幕截图中传递了fileColumnHeaders
内部 Body->Form Data。
然后我在 Postman 中收到这样的消息:
无法将“java.lang.String”类型的值转换为所需的“java.util.Map”类型;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“java.util.Map”:找不到匹配的编辑器或转换策略。
有人知道为什么会出现这条消息吗?我们如何在 Rest API 请求中将地图作为参数传递?我们如何通过 Postman 传递地图?
解决方案
您可以使用@RequestBody
而不是@RequestParam
Maps 和其他重要的数据类型和对象 - 这样 spring 会将表示您的 map 参数的 JSON 映射到域对象,然后可以序列化并可以转换为 java 对象。
推荐阅读
- c# - UWP: 0x80131040: 定位程序集的清单定义与程序集引用不匹配
- database - 如何使用 pandas 在此 Dataframe 中找到唯一值?
- python - 检查文本文件中的单词是否存在于第二个文本文件中太慢了
- cytoscape.js - 在 Cytoscape.js 中的节点内动态显示另一个图形
- django - Django 通道用户名发件人
- rust - Rust 中的数学语法
- python - 修改绘图图形对象中标题的颜色
- swift - 转义闭包捕获非转义参数调度
- r - 检查名称是否在电子邮件列中重复
- python - PSET 6 DNA:如何计算连续 STR 的运行次数