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

Axios传递ID数组到Spring MVC控制器报400错误,如何解决?

问题解决:Axios传数组到Spring Boot控制器报400 Bad Request

错误原因

你前端发送的请求体是包含genreIds字段的JSON对象(格式类似{"genreIds": [1,2,3,4]}),但后端@RequestBody直接声明接收Long[]类型,Spring无法将对象解析为纯数组,因此返回400错误。

两种解决方案

方案一:修改前端请求,直接发送纯数组

调整Axios的请求体,直接传递数组而非包裹在对象中:

axios.put('{{ myUrl }}', this.form.selectedGenres)

此时后端原有的@RequestBody Long[] genreIds就能正确解析请求体中的数组数据。

方案二:修改后端,用DTO类接收请求对象

如果前端不想修改请求格式,后端可以定义一个数据传输对象(DTO)来匹配前端的请求结构:

public class GenreIdsRequest {
    private Long[] genreIds;

    // 必须提供getter和setter,Spring才能完成属性注入
    public Long[] getGenreIds() {
        return genreIds;
    }

    public void setGenreIds(Long[] genreIds) {
        this.genreIds = genreIds;
    }
}

然后更新控制器方法的参数:

@PutMapping("/url")
Song myMethod(
        @PathVariable Long songId,
        @RequestBody GenreIdsRequest request
) {
    Long[] genreIds = request.getGenreIds();
    System.out.println(genreIds);
    // 后续业务代码
}

额外验证点

  • 确认this.form.selectedGenres确实是数组类型(比如[1,2,3,4]),而非字符串或其他格式
  • 检查Axios请求的Content-Type是否为application/json(Axios默认会自动设置,若有自定义配置需确保该值正确)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:55:29