📌 一、核心思想:把后端的一切都看作"资源"

比如用户、订单、文章,都是资源

  • 每个资源对应一个 名词 的 URL,不用动词

  • 对这个资源做什么操作,用 HTTP 请求方法 来表示

💡 一句话理解:URL 是"什么东西",HTTP 方法是"对它做什么"。


🔀 二、传统风格 vs RESTful 风格

❌ 传统(不 RESTful)的写法

POST /getUserById?id=1
POST /deleteUser?id=1
POST /addUser
POST /updateUser

问题很明显:

  • 全是 POST,看不出语义

  • URL 里带动词(getdeleteadd),冗长且不统一

  • 前端必须死记硬背每个接口地址

✅ 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 设计的基石。掌握它,你写的接口会更专业、更好维护、前后端协作更顺畅!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐