You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

控制器Post映射用@RequestBody MultiValueMap报415错误,求解决

解决415 Unsupported Media Type错误的方案

问题原因

当你在控制器方法中使用@RequestBody MultiValueMap<String, String>接收参数时,Spring默认要求请求的Content-Type为application/x-www-form-urlencoded(表单编码格式)。但你通过PostMan发送的是JSON格式的请求体,对应的Content-Type是application/json,Spring无法将JSON格式的请求体解析为MultiValueMap类型,因此抛出415错误。

解决方案

方案一:调整PostMan请求格式适配MultiValueMap

  • 在PostMan中,将请求体类型从raw(JSON)切换为x-www-form-urlencoded或form-data
  • 添加键值对name=john,PostMan会自动设置对应的Content-Type请求头,Spring就能正常解析为MultiValueMap

方案二:修改控制器参数适配JSON请求

如果你需要保持JSON格式的请求体,建议将参数类型改为Map<String, String>或自定义实体类:

使用Map<String, String>示例

@PostMapping("/your-api-path")
public ResponseEntity<?> handleRequest(@RequestBody Map<String, String> requestBody) {
    String name = requestBody.get("name");
    // 业务逻辑处理
    return ResponseEntity.ok("Received name: " + name);
}

使用自定义实体类示例

// 定义请求实体类
public class UserRequest {
    private String name;

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

// 控制器方法
@PostMapping("/your-api-path")
public ResponseEntity<?> handleRequest(@RequestBody UserRequest requestBody) {
    String name = requestBody.getName();
    // 业务逻辑处理
    return ResponseEntity.ok("Received name: " + name);
}

额外说明

MultiValueMap主要用于处理表单请求中存在多个相同键的场景(比如name=john&name=doe),JSON格式的请求更适合用普通Map或实体类来接收,不建议强行配置转换器让MultiValueMap支持JSON,会增加不必要的复杂度。

内容的提问来源于stack exchange,提问作者Anamika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:45:37