想象一下,你开了一家餐馆,这家餐馆就是你开发的后端程序。而顾客(比如手机APP、网页)就是前端

那么,@Post, @Get, @Delete, @Put 这些注解,就是顾客对你这个“餐馆”提出的四种不同类型的请求。它们合起来有一个学名,叫 RESTful API 的设计风格。


1. @GetMapping - “老板,我要看菜单!” (查询)

  • 它干啥的获取数据。只从服务器拿信息,不会对数据做任何修改、删除操作。

  • 生活例子:顾客进店,说:“老板,把菜单给我看看。” 这个操作只是“看”,不会改变餐馆的任何东西。

  • 在这里插入图片描述

  • 在Java代码里怎么写

    @RestController
    public class RestaurantController {
    
        // 当有人请求 "/menu" 这个地址时,就会调用这个方法
        @GetMapping("/menu")
        public String getMenu() {
            return "这里是我们的菜单:鱼香肉丝、宫保鸡丁...";
        }
    }
    
  • 特点:安全、幂等。你查100次菜单,菜单还是那个菜单,不会多一道菜也不会少一道菜。


2. @PostMapping - “老板,我点好菜了,下单!” (新增)

  • 它干啥的新建提交数据。通常用于创建一个新的资源。

  • 生活例子:顾客在点菜单上勾选了“鱼香肉丝”和“米饭”,然后举手说:“老板,下单!” 这时,后厨就会新增一个订单。

  • 在这里插入图片描述

  • 在Java代码里怎么写

    @PostMapping("/order")
    public String createOrder(@RequestBody Order order) { // @RequestBody 用来接收前端传过来的数据
        // 这里会把接收到的 order 对象(比如包含了菜品ID)保存到数据库
        return "订单创建成功!订单号:12345";
    }
    
  • 特点不安全不幂等。你每下一次单,后厨就多一个订单。你提交10次,就会创建10个订单。


3. @PutMapping - “老板,我这个订单里的米饭换成馒头!” (更新/替换)

  • 它干啥的更新已有数据的全部内容。可以理解为“替换”。

  • 生活例子:顾客发现订单里的“米饭”点错了,想换成“馒头”。他对服务员说:“把我这个订单里的内容整个换掉,别的菜不变,就是把米饭换成馒头。” 服务员会拿一张新的点菜单,把修改后的完整内容写上去,替换掉旧的。

  • 在这里插入图片描述

  • 在Java代码里怎么写

    @PutMapping("/order/{id}") // {id} 是订单号,告诉服务器要更新哪条数据
    public String updateOrder(@PathVariable String id, @RequestBody Order newOrder) {
        // 根据 id 找到旧订单,然后用 newOrder 这个新对象完全替换它
        return "订单更新成功!";
    }
    
  • 特点:不安全,但幂等。你连续多次告诉老板“把米饭换成馒头”,最终结果和只说一次是一样的,订单里依然是馒头,不会变成10个馒头。


4. @DeleteMapping - “老板,我这个订单不要了,取消!” (删除)

  • 它干啥的删除数据。

  • 生活例子:顾客等得太久,不想吃了,说:“老板,把我刚下的那个订单取消掉!

  • 在这里插入图片描述

  • 在Java代码里怎么写

    @DeleteMapping("/order/{id}")
    public String cancelOrder(@PathVariable String id) {
        // 根据 id 找到那个订单,然后从数据库里删除它
        return "订单已取消!";
    }
    
  • 特点:不安全,但幂等。你删一次,订单没了。你再删100次,结果还是“订单不存在”,和删一次的效果一样。


总结与类比(非常重要!)

注解 英文含义 中文意思 操作 生活例子 特点
@GetMapping Get 获取 (Read) 看菜单 安全、幂等
@PostMapping Post (邮寄) 提交 (Create) 下单 不安全不幂等
@PutMapping Put (放置) 放置/替换 (Update) 修改订单(整个替换) 不安全、幂等
@DeleteMapping Delete 删除 (Delete) 取消订单 不安全、幂等

这四种操作,正好对应了数据库最基本的 增(Create)、删(Delete)、改(Update)、查(Read) 操作,合称 CRUD

补充一个小知识:@RequestMapping

你可能会在老的代码里看到一个更通用的注解 @RequestMapping。它可以代替上面所有注解,但需要你手动指定方法类型。

// 这四种写法是等价的

@RequestMapping(value = "/menu", method = RequestMethod.GET) // 老写法,比较啰嗦
@GetMapping("/menu") // 新写法,更简洁,推荐!

最后记住一个核心:

这些注解都是贴在Java方法上面的,它们的作用就是告诉Spring框架:“我这个方法,是专门用来处理哪种类型的HTTP请求的”。当有对应的请求过来时,Spring就会自动调用你写的方法。

现在,是不是感觉清楚多了?就像在管理一家餐馆的订单一样简单!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐