@GetMapping @PostMapping @DeleteMapping @PutMapping

在 Spring Boot(或 Spring MVC)中,@GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 是用于定义 RESTful 接口的 HTTP 方法专用注解,它们是对 @RequestMapping 的语义化封装,使代码更清晰、简洁。

注解 HTTP 方法 用途 等价写法 参数
@GetMapping GET 获取资源(查询) @RequestMapping(method = RequestMethod.GET) @PathVariable, @RequestParam 单独使用
@PostMapping POST 创建资源 / 提交数据 @RequestMapping(method = RequestMethod.POST) @RequestBody
@PutMapping PUT 全量更新 资源 @RequestMapping(method = RequestMethod.PUT) @PathVariable, @RequestBody 合用
@DeleteMapping DELETE 删除资源 @RequestMapping(method = RequestMethod.DELETE) @PathVariable
javascript 复制代码
@RestController
@RequestMapping("/api/users")
public class UserController {

    // GET /api/users/1
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }

    // GET /api/users?role=admin
    @GetMapping
    public List<User> getUsers(@RequestParam(required = false) String role) {
        return userService.findByRole(role);
    }

    // POST /api/users (请求体为 JSON)
    @PostMapping
    public User createUser(@RequestBody CreateUserRequest request) {
        return userService.create(request);
    }

    // PUT /api/users/1 (全量更新)
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody UpdateUserRequest request) {
        return userService.updateFull(id, request);
    }

    // DELETE /api/users/1
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        userService.delete(id);
        return ResponseEntity.noContent().build(); // 返回 204 No Content
    }
}

@GetMapping

GET /api/example?a=1&b=2&c=3
方法1

javascript 复制代码
@GetMapping("/example")
public String handleRequest(
    @RequestParam String a,
    @RequestParam Integer b,
    @RequestParam(required = false) String c  // 可选参数
) {
    System.out.println("a=" + a + ", b=" + b + ", c=" + c);
    return "OK";
}

方法二:封装到一个 POJO 对象中(适合参数多或复用)

javascript 复制代码
public class QueryParams {
    private String a;
    private Integer b;
    private String c;

    // 必须有 getter/setter(Lombok 可简化)
    public String getA() { return a; }
    public void setA(String a) { this.a = a; }
    public Integer getB() { return b; }
    public void setB(Integer b) { this.b = b; }
    public String getC() { return c; }
    public void setC(String c) { this.c = c; }
}
javascript 复制代码
@GetMapping("/example")
public String handleRequest(QueryParams params) {
    System.out.println(params.getA() + ", " + params.getB() + ", " + params.getC());
    return "OK";
}
相关推荐
阿丰资源3 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
消失的旧时光-19434 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
StockTV5 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
橘子海全栈攻城狮6 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
敖正炀6 小时前
反模式与排查宝典:Spring Boot 自动配置与核心机制的常见陷阱
spring boot
直奔標竿7 小时前
Java开发者AI转型第二十六课!Spring AI 个人知识库实战(五)——联网搜索增强实战
java·开发语言·人工智能·spring boot·后端·spring
吴爃8 小时前
Spring Boot 项目在 K8S 中的打包、部署与运维发布实践
运维·spring boot·kubernetes
a8a3028 小时前
Laravel8.x新特性全解析
java·spring boot·后端
白露与泡影8 小时前
Spring Boot 完整流程
java·spring boot·后端