Spring MVC 中的 RESTful 风格:一文彻底搞懂接口设计规范
📌 一、核心思想:把后端的一切都看作"资源"
比如用户、订单、文章,都是资源。
-
每个资源对应一个 名词 的 URL,不用动词
-
对这个资源做什么操作,用 HTTP 请求方法 来表示
💡 一句话理解:URL 是"什么东西",HTTP 方法是"对它做什么"。
🔀 二、传统风格 vs RESTful 风格
❌ 传统(不 RESTful)的写法
POST /getUserById?id=1 POST /deleteUser?id=1 POST /addUser POST /updateUser
问题很明显:
-
全是
POST,看不出语义 -
URL 里带动词(
get、delete、add),冗长且不统一 -
前端必须死记硬背每个接口地址
✅ RESTful 风格的写法
| 动作 | HTTP 方法 | URL | 含义 |
|---|---|---|---|
| 查询用户 1 | GET | /users/1 |
获取 id=1 的用户 |
| 新增用户 | POST | /users |
创建一个新用户 |
| 更新用户 | PUT | /users/1 |
整体更新 id=1 的用户 |
| 删除用户 | DELETE | /users/1 |
删除 id=1 的用户 |
🎯 RESTful 的精髓
同一个 URL,用不同的 HTTP 方法做不同的事。
-
URL 只用名词复数(
/users) -
动作交给 GET / POST / PUT / DELETE 来表达
-
一眼就能看出这个接口在干什么
☕ 三、在 Spring MVC 里怎么写?
你前面看到的注解,其实就是在写 RESTful 接口:
@RestController // 标识这个类返回 JSON,而不是页面
public class UserController {
@GetMapping("/users/{id}") // GET 请求 → 查询
public User getUser(@PathVariable Long id) {
// 根据 id 查询用户
return userService.getUserById(id);
}
@PostMapping("/users") // POST 请求 → 新增
public User createUser(@RequestBody User user) {
// 创建新用户
return userService.createUser(user);
}
@PutMapping("/users/{id}") // PUT 请求 → 更新
public User updateUser(@PathVariable Long id, @RequestBody User user) {
// 整体更新用户信息
return userService.updateUser(id, user);
}
@DeleteMapping("/users/{id}") // DELETE 请求 → 删除
public void deleteUser(@PathVariable Long id) {
// 删除指定用户
userService.deleteUser(id);
}
}
🔑 关键注解说明
| 注解 | 作用 |
|---|---|
@RestController |
标识该类返回 JSON 数据,而非视图页面 |
@GetMapping |
映射 GET 请求(查询) |
@PostMapping |
映射 POST 请求(新增) |
@PutMapping |
映射 PUT 请求(整体更新) |
@DeleteMapping |
映射 DELETE 请求(删除) |
@PathVariable |
从 URL 路径中提取参数(如 {id}) |
@RequestBody |
将前端传来的 JSON 自动转为 Java 对象 |
🤔 四、为什么说"风格"而不是"标准"?
因为 RESTful 只是一套 约定,没有强制的技术细节。
-
你可以不完全遵守 ✅
-
但大家都遵守时,前后端沟通成本会低很多 ✅
实际好处
前端开发一看
DELETE /users/1就知道是删用户,不用翻文档找"删用户要调哪个接口"。
这就是约定带来的效率提升!
🔗 五、跟前面的"接口"联系起来前端接口,Service 接口——很多新手都搞混了这两个“接口“
"核心业务逻辑接口供前端使用",在代码里就表现为:
Controller 暴露的 RESTful API → 通过 URL + HTTP 方法把 Service 层的能力开放出去
完整链路回顾:
前端(Vue/React) ↓ 发起 HTTP 请求(GET/POST/PUT/DELETE) Controller(接收请求,暴露 RESTful 接口) ↓ 调用 Service 接口 & 实现类(执行业务逻辑) ↓ 调用 Mapper 层数据访问 ↓ 操作 数据库
✅ 结论
学 Spring MVC 写接口,基本就是在写 RESTful 风格的 API。
📚 扩展阅读
还想深挖?以下话题可以继续了解:
-
🔹 PUT 和 PATCH 的区别 —— 整体更新 vs 局部更新
-
🔹 RESTful 状态码规范 —— 200、201、204、400、404、500 各自的使用场景
-
🔹 Swagger / Knife4j —— 自动生成 RESTful 接口文档
写在最后
RESTful 看似简单,但它是现代 Web API 设计的基石。掌握它,你写的接口会更专业、更好维护、前后端协作更顺畅!
更多推荐




所有评论(0)