Axios 传参与 Spring Boot 接收参数完全指南


Axios 传参与 Spring Boot 接收参数完全指南

本文详细说明前端 Axios 传参与后端 Spring Boot 接收参数的各类场景,包括 GET/POST/PUT/DELETE 请求、路径参数/查询参数/请求体参数 的传递方式,以及如何接收 ListMap 等复杂类型。通过代码示例和对比表格,帮助开发者快速掌握正确用法。


一、GET 请求

1.1 查询参数(URL 参数)

Axios 传参

使用 params 字段,参数自动拼接到 URL:

javascript 复制代码
axios.get('/api/user', {
  params: {
    id: 1,
    name: 'John'
  }
});
// URL 结果:/api/user?id=1&name=John
Spring Boot 接收
  • 使用 @RequestParam 注解(可省略参数名匹配时):

    java 复制代码
    @GetMapping("/api/user")
    public String getUser(
        @RequestParam Long id,        // 显式注解
        String name                   // 省略注解(参数名需一致)
    ) {
        // 业务逻辑
    }

1.2 路径参数

Axios 传参

参数直接嵌入 URL:

javascript 复制代码
axios.get(`/api/user/${userId}`);
Spring Boot 接收

使用 @PathVariable 注解:

java 复制代码
@GetMapping("/api/user/{userId}")
public String getUser(@PathVariable Long userId) {
    // 业务逻辑
}

1.3 接收 ListMap

Axios 传参(List)

需序列化为重复参数:

javascript 复制代码
axios.get('/api/users', {
  params: { ids: [1, 2, 3] },
  paramsSerializer: params => qs.stringify(params, { arrayFormat: 'repeat' })
});
// URL 结果:/api/users?ids=1&ids=2&ids=3
Spring Boot 接收
java 复制代码
@GetMapping("/api/users")
public List<User> getUsers(@RequestParam List<Long> ids) { ... }

@GetMapping("/api/user")
public Map<String, String> getParams(@RequestParam Map<String, String> params) { ... }

二、POST 请求

2.1 JSON 数据(默认)

Axios 传参

使用 data 字段,默认 Content-Type: application/json

javascript 复制代码
axios.post('/api/user', { 
  name: 'John', 
  address: { city: 'New York' } // 嵌套对象
});
Spring Boot 接收

使用 @RequestBody 绑定对象:

java 复制代码
@PostMapping("/api/user")
public User createUser(@RequestBody User user) { ... }

2.2 表单数据(Form Data)

Axios 传参

需设置 Content-Type: application/x-www-form-urlencoded

javascript 复制代码
const params = new URLSearchParams();
params.append('name', 'John');
params.append('age', 30);

axios.post('/api/user', params, {
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
Spring Boot 接收
  • 逐个接收或绑定到对象:

    java 复制代码
    @PostMapping("/api/user")
    public String createUser(
        @RequestParam String name,    // 逐个接收
        @ModelAttribute User user     // 绑定到对象(可省略注解)
    ) { ... }

2.3 接收 ListMap

Axios 传参(List)

发送 JSON 数组:

javascript 复制代码
axios.post('/api/users', [
  { name: 'John' }, { name: 'Alice' }
]);
Spring Boot 接收
java 复制代码
@PostMapping("/api/users")
public String createUsers(@RequestBody List<User> users) { ... }
Axios 传参(Map)

发送 JSON 数组:

javascript 复制代码
axios.post('/api/data', {
  key1: 'value1',
  key2: { nestedKey: 'nestedValue' }
});
Spring Boot 接收
java 复制代码
@PostMapping("/api/data")
public String handleData(@RequestBody Map<String, Object> data) { ... }

三、PUT/DELETE 请求

3.1 更新资源(PUT)

Axios 传参

混合路径参数和请求体:

javascript 复制代码
axios.put(`/api/user/${userId}?role=admin`, { name: 'Alice' });
Spring Boot 接收
java 复制代码
@PutMapping("/api/user/{id}")
public User updateUser(
    @PathVariable Long id,
    @RequestParam String role,
    @RequestBody User user
) { ... }

3.2 删除资源(DELETE)

Axios 传参

路径参数 + 查询参数:

javascript 复制代码
axios.delete(`/api/user/${userId}?force=true`);
Spring Boot 接收
java 复制代码
@DeleteMapping("/api/user/{id}")
public void deleteUser(
    @PathVariable Long id,
    @RequestParam boolean force
) { ... }

四、注解使用规则

4.1 @RequestParam@PathVariable

注解 必须显式使用? 适用场景
@RequestParam 参数名不一致时需显式 URL 查询参数或表单字段
@PathVariable 必须显式使用 URL 路径参数(如 /user/{id}

4.2 @RequestBody@ModelAttribute

注解 数据来源 Content-Type 绑定机制
@RequestBody 请求体(JSON/XML) application/json 反序列化为对象
@ModelAttribute URL 参数或表单字段 application/x-www-form-urlencoded 按名称匹配到对象属性

五、常见问题解答

5.1 参数未正确接收?

  • 检查点
    1. 前端 Content-Type 是否与后端匹配(如 JSON 需 @RequestBody)。
    2. 参数名是否一致(尤其是 @RequestParam@PathVariable)。
    3. GET 请求是否误用请求体(默认不支持)。

5.2 日期/时间参数处理

在字段上添加 @DateTimeFormat

java 复制代码
public class User {
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private LocalDate birthday;
}

5.3 接收 Map 的注意事项

  • GET 请求Map 的值为 String 类型。
  • POST 请求Map 可嵌套复杂对象(需 @RequestBody)。

六、总结速查表

场景 HTTP 方法 Axios 传参方式 Spring Boot 接收方式
查询用户 GET params @RequestParam / 无注解
创建用户(JSON) POST data 对象 @RequestBody
提交表单 POST FormData @RequestParam / @ModelAttribute
更新用户 PUT 路径参数 + JSON 请求体 @PathVariable + @RequestBody
批量删除用户 DELETE 路径参数 + 查询参数 @PathVariable + @RequestParam

通过本文档,您可快速掌握前后端参数传递的核心规则。建议结合代码示例和对比表格,根据实际场景选择正确的传参方式。

相关推荐
BIG_PEI几秒前
检查并安装Redis
java
大貔貅喝啤酒2 分钟前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
奋斗的小方4 分钟前
Java基础篇09:项目实战
java·开发语言
海兰5 分钟前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
vKd0Ff21L7 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
武子康9 分钟前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq
神奇小汤圆11 分钟前
为什么Redis能称霸缓存界?揭秘其每秒10万+读写的核心技术
后端
楼田莉子15 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
北风toto17 分钟前
为什么 IntelliJ IDEA Community 无法开发 Vue?——附解决方案
java·vue.js·intellij-idea
programhelp_17 分钟前
Google 2026 New Grad SDE VO 三轮面试详解 | 含Behavioral、Coding、Design
java·服务器·数据库