首页 > 解决方案 > 从 Postman 调用时,Spring Boot Multipart REST 端点给出“当前请求不是多部分请求”

问题描述

Spring Boot 版本:2.1.5.RELEASE。Spring Cloud 版本:Greenwich.RELEASE

我在带注释的类中定义了以下端点@Controller

@PostMapping("/")
@ResponseBody
public OcrResponse submitFile(@RequestParam("file") MultipartFile multipartFile) {
    logger.info("Entering submitFile method");
    //do more stuff......
}

我正在使用 Postman 对其进行测试,并且运行良好。昨天,我决定将 Postman 更新到最新版本(距离我更新它可能至少一年)。现在,当我测试它时,我收到以下错误:-

org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:194)
    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:113)

这就是我的邮递员请求的样子:-

  1. 标题。这些是邮递员自己自动包含的,我自己没有添加:-

邮差头

  1. 正文(也显示错误):-

邮递员身体和错误

我看到其他帖子也有类似的错误,但这些大多已通过从请求中删除 Content-type 标头来解决,但在这种情况下不起作用。

我尝试过删除、重命名和重新排序 Postman 标头,但这些都没有帮助。我还尝试更改 REST 端点方法签名,例如重命名 MultipartFile 变量和参数以及使用 RequestPart 而不是 RequestParam,但到目前为止没有任何效果。在旧版本的 Postman 上执行完全相同的请求似乎很奇怪。我将非常感谢任何指导/建议。

标签: javaspring-bootrestpostmanmultipartform-data

解决方案


以防万一它对其他人有帮助,我正在分享我是如何解决这个问题的......

当我安装了旧版本的 Postman 并通过设置 -> 更新菜单将安装的版本更新到最新版本时,会出现上述问题。

从那以后,我完全卸载了 Postman,并从头开始安装最新版本。现在问题已经消失,我可以成功测试我的端点。有点奇怪,但至少它已经解除了我的障碍。

因此,我对任何升级 Postman 安装的人的建议是避免尝试更新现有安装。相反,导出所有收藏,完全卸载旧版本,从头开始安装新版本并重新导入所有收藏。


推荐阅读