当前位置: 首页 > news >正文

Spring Boot 中 controller层注解

总结:@RestController 中的常用方法注解及其省略情况

在 Spring Boot 中,@RestController 是一个用于处理 RESTful 风格请求的组合注解,它结合了 @Controller@ResponseBody,使得返回的对象直接转换成 JSON 或 XML 格式,无需视图解析。它常用于 API 接口,尤其是处理 HTTP 请求时常用的方法注解如下:

1. @GetMapping

  • 作用:处理 HTTP GET 请求,通常用于获取资源。

  • 示例

    @GetMapping("/greet")
    public String greet() {return "Hello, World!";
    }
    
  • 省略情况

    • 可以省略 @RequestParam:如果请求参数的名称与方法参数名称一致,@RequestParam 可以省略。

    • 如果没有查询参数,也可以省略 @RequestParam 注解。

2. @PostMapping

  • 作用:处理 HTTP POST 请求,通常用于创建资源。

  • 示例

    @PostMapping("/createUser")
    public String createUser(@RequestBody User user) {return "User created: " + user.getName();
    }
    
  • 省略情况

    • @RequestBody 不能省略:在处理 POST 请求时,@RequestBody 用于将请求体数据映射到 Java 对象。

3. @PutMapping

  • 作用:处理 HTTP PUT 请求,通常用于更新资源。

  • 示例

    @PutMapping("/updateUser/{id}")
    public String updateUser(@PathVariable Long id, @RequestBody User user) {return "User with id " + id + " updated to: " + user.getName();
    }
    
  • 省略情况

    • @PathVariable@RequestBody 不能省略,除非你不需要从 URL 或请求体获取参数。

4. @DeleteMapping

  • 作用:处理 HTTP DELETE 请求,通常用于删除资源。

  • 示例

    @DeleteMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable Long id) {return "User with id " + id + " deleted";
    }
    
  • 省略情况

    • @PathVariable 不能省略,如果 URL 路径中有动态参数。

5. @PatchMapping

  • 作用:处理 HTTP PATCH 请求,通常用于部分更新资源。

  • 示例

    @PatchMapping("/updateUser/{id}")
    public String patchUser(@PathVariable Long id, @RequestBody User user) {return "User with id " + id + " partially updated to: " + user.getName();
    }
    
  • 省略情况

    • @PathVariable@RequestBody 不能省略,除非请求中没有对应的路径或请求体。

6. @RequestMapping

  • 作用:通用注解,用于处理所有 HTTP 请求类型(如 GET、POST、PUT、DELETE 等),可以指定 method 属性限制特定的 HTTP 方法。

  • 示例

    @RequestMapping(value = "/greet", method = RequestMethod.GET)
    public String greet() {return "Hello, World!";
    }
    
  • 省略情况

    • 使用更具体的注解(如 @GetMapping@PostMapping 等)时,@RequestMapping 可以省略。

7. @RequestParam

  • 作用:获取 HTTP 请求中的查询参数。

  • 示例

    @GetMapping("/greet")
    public String greet(@RequestParam String name) {return "Hello, " + name;
    }
    
  • 省略情况

    • 可以省略:如果查询参数的名称与方法参数名称一致,Spring 会自动绑定查询参数到方法参数。

8. @PathVariable

  • 作用:从 URL 路径中获取动态参数。

  • 示例

    @GetMapping("/greet/{name}")
    public String greet(@PathVariable String name) {return "Hello, " + name;
    }
    
  • 省略情况

    • 可以省略:如果方法参数的名称与 URL 路径变量名称一致,Spring 自动绑定。

9. @RequestBody

  • 作用:将 HTTP 请求体中的数据映射为 Java 对象。

  • 示例

    @PostMapping("/createUser")
    public String createUser(@RequestBody User user) {return "User created: " + user.getName();
    }
    
  • 省略情况

    • 不能省略,如果方法需要从请求体中获取数据。

10. @ResponseBody

  • 作用:指示 Spring 将方法的返回值直接写入 HTTP 响应体,而不是进行视图解析。

  • 示例

    @RestController
    public class MyController {@GetMapping("/greet")@ResponseBodypublic String greet() {return "Hello, World!";}
    }
    
  • 省略情况

    • 可以省略:在 @RestController 中,@ResponseBody 已隐式包含,不需要显式使用。

11. @Valid@Validated

  • 作用:用于验证请求体中的数据,通常与 @RequestBody 配合使用。

  • 示例

    @PostMapping("/createUser")
    public String createUser(@RequestBody @Valid User user) {return "User created: " + user.getName();
    }
    
  • 省略情况

    • 可以省略:如果不需要对请求体进行验证,@Valid@Validated 可以省略。

12. @ModelAttribute

  • 作用:将 HTTP 请求中的参数绑定到 Java 对象。常用于表单提交或 GET 请求的查询参数。

  • 示例

    @PostMapping("/createUser")
    public String createUser(@ModelAttribute User user) {return "User created: " + user.getName();
    }
    
  • 省略情况

    • 可以省略:如果你直接使用 @RequestParam@RequestBody 来处理参数绑定。

小结:每种注解的省略情况

注解省略情况
@GetMapping查询参数与方法参数名称一致时,@RequestParam 可以省略。
@PostMapping不能省略 @RequestBody,除非不需要请求体数据。
@PutMapping不能省略 @PathVariable@RequestBody
@DeleteMapping不能省略 @PathVariable
@PatchMapping不能省略 @PathVariable@RequestBody
@RequestMapping使用更具体的注解(如 @GetMapping 等)时可以省略。
@RequestParam方法参数名称与查询参数名称一致时,可以省略。
@PathVariable方法参数名称与路径变量名称一致时,可以省略。
@RequestBody不能省略,用于绑定请求体中的数据。
@ResponseBody@RestController 中可以省略。
@Valid / @Validated不进行验证时可以省略。
@ModelAttribute可以省略,如果使用 @RequestParam@RequestBody

结论:

这些注解让 Spring Boot 中的 API 方法更具灵活性。合理使用它们并了解何时可以省略,能够让代码更加简洁、易于维护。

http://www.dtcms.com/a/540908.html

相关文章:

  • 润滑油东莞网站建设技术支持网页美工培训中心
  • Jmeter:接口测试流程(附图)
  • 大模型面试题:简述GPT和BERT的区别?
  • myalsa仓库体验
  • 全域互联,统一管控:EasyCVR构建多区域视频监控“一网统管”新范式
  • 使用 Fast GraphRAG 和 LM Studio 搭建本地技术文档分析系统
  • 【技术变迁脉络解析】Axure RP 介绍、版本历史及推荐
  • 【C端】底部导航栏实现
  • 智能科技的附加特性:提升用户体验的多样选择
  • Python爬虫定时任务:自动化抓取豆瓣每日最新短评
  • 6.1.1.2 大数据方法论与实践指南-实时任务(spark/flink)任务的 cicd 解决方案
  • 基于神经元的多重分形分析在大模型神经元交互动力学中的应用
  • 客户案例:SLIP ROBOTICS+OAK—物流自动化边缘 AI 视觉应用
  • Flink DataStream API 从基础原语到一线落地
  • RAPID常用数据类型以及API中文
  • 网站建设公司要多少钱智慧团建平台
  • ECharts 3D立体柱状图组件开发全解析:Bar3D_2.vue 深度剖析
  • ARM《6》_给sd卡中拷入uboot程序
  • iOS 26 开发者工具推荐,构建高效调试与性能优化工作流
  • 综述:deepSeek-OCR,paddle-OCR,VLM
  • 邢台市地图全图高清版小红书seo软件
  • 网安面试题收集(5)
  • 台州新农村建设网站沈阳工程信息交易网
  • 全国酒店网站建设金融网站欣赏
  • WebForms TextBox:深入解析与最佳实践
  • 北京商城网站开发如何进行域名注册
  • 基于三维点云图的路径规划
  • 机器学习中的数学——矩阵与向量基础
  • 华升建设集团有限公司网站wordpress清空post表
  • 合肥网站建设 卫来科技珠海企业营销型网站建设公司