映射为 RestAPI Post 请求中的参数

Ana*_*nas 1 java spring spring-mvc spring-boot postman

我创建了一个带有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);
}
Run Code Online (Sandbox Code Playgroud)

我试图通过邮递员调用它:

我通过了fileColumnHeaders内部 Body->Form Data,如屏幕截图所示。

然后我在 Postman 中收到了这样的消息:

无法将类型“java.lang.String”的值转换为所需类型“java.util.Map”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“java.util.Map”:找不到匹配的编辑器或转换策略。

有人知道为什么会发这个消息吗?我们如何在 Rest API 请求中将地图作为参数传递?我们如何通过Postman传递地图?

T A*_*T A 5

您可以使用@RequestBody代替@RequestParamMap 和其他重要的数据类型和对象 - 这样 spring 会将表示您的地图参数的 JSON 映射到域对象,然后该域对象可序列化并可以转换为 java 对象。