Spring Boot 注解探秘:HTTP 请求的魅力之旅

devtools/2024/12/22 9:04:55/
http://www.w3.org/2000/svg" style="display: none;">

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。

一、@RequestMapping

@RequestMapping用于将特定的HTTP请求映射到特定的方法上。可用于类级别和方法级别上,以下是代码示例。

java">@RestController
@RequestMapping("/customer-api/") // 类级别,所有方法都以customer-api开头
public class  CustomerApi{@RequestMapping(value = "/get-customer-by-id", method = RequestMethod.GET){ // 方法级别,当收到对/customer-api/get-customer-by-id路径的GET请求时,会调用getCustomerById方法。Response<Customer> getCustomerById(@RequestParam("id") Integer id)……}
}

本节示例中@RestController和@RequestParam注解可以先忽略,下面会介绍到。

二、PutMapping、DeleteMapping、GetMapping和PostMapping

为了更加明确表示不同的HTTP方法,Spring Boot提供了一组特定的注解,分别对应PUT, DELETE、GET、POST(增删改查)请求。

java">@RestController
@RequestMapping("/customer-api/") 
public class  CustomerApi{@PutMapping("/add-customer") // 增加的请求,和@RequestMapping的PUT方式等价Response<?> addCustomer(@RequestBody Customer customer)……}@DeleteMapping("/delete-customer-by-id") // 删除的请求,和@RequestMapping的DELETE方式等价Response<?> deleteCustomer(@RequestParam("id") Integer id)……}@PostMapping("/update-customer") // 更新的请求,和@RequestMapping的POST方式等价Response<?> updateCustomer(@RequestBody Customer customer)……}// @RequestMapping(value = "/get-customer-by-id", method = RequestMethod.GET)   // 方式1@GetMapping("/get-customer-by-id") // 和方式1是等价的。Response<Customer> getCustomerById(@RequestParam("id") Integer id)……}
}

三、@RequestParam和@PathVariable

  • @RequestParam用于获取查询参数
  • @PathVariable用于获取路径变量
java">@GetMapping("/get-customer-by-id"){ Response<Customer> getCustomerById(@RequestParam("id") Integer id) // @RequestParam就可获取请求路径/get-customer-by-id?id=1中的id的值……}@GetMapping("/get-customer/{id}"){ Response<Customer> getCustomerById(@PathVariable("id") Integer id) // @PathVariable可获取路径/get-customer/{id}中的id的值……}

四、@RequestBody

@RequestBody注解用于将 HTTP 请求的主体内容绑定到方法的参数上。通常用于处理 POST 和 PUT 请求,当请求的主体是 JSON 或 XML 格式的数据时非常有用。
示例见第二节,这里就不重复赘述了。

五、@RestController和Controller

@RestController和@Controller都是用于定义控制器类的注解,但是两者之间有细微的差异。
@RestController是一个组合注解,相当于@Controller和@ResponseBody。 用@RestController标注的API类,其中的方法会直接返回数据(如JSON、XML),不会返回视图。
@Controller刚好相反,它标注的类中的方法会直接返回视图(如JSP、Thymeleaf模版等)。

  • 小结:现在的微服务项目基本都是前后端分离,所以@Controller已经慢慢的淡出了视野,很少使用,而@RestController已然成为了主流。

后面有时间了在聊聊GET和POST请求的区别,大厂面试被问到的频次贼高。


http://www.ppmy.cn/devtools/109240.html

相关文章

通义千问大模型Java调用,百炼

文章目录 一、大模型服务平台[百炼](https://help.aliyun.com/zh/model-studio/getting-started)二、Java sdk调用与eventStream三、百炼平台其它 一、大模型服务平台百炼 百炼是阿里新出的一个大模型服务平台&#xff0c;聚合了多个千问大模型及其它一些大模型的调用&#xf…

C语言手撕归并——递归与非递归实现(附动画及源码)

&#x1f916;&#x1f4bb;&#x1f468;‍&#x1f4bb;&#x1f469;‍&#x1f4bb;&#x1f31f;&#x1f680; &#x1f916;&#x1f31f; 欢迎降临张有志的未来科技实验室&#x1f916;&#x1f31f; 专栏&#xff1a;数据结构 &#x1f468;‍&#x1f4bb;&#x1f…

SprinBoot+Vue公交智能化系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

vue3项目npm i安装依赖一直转圈或安装失败解决方法~

1、有时npm i安装依赖时会一直转圈或安装失败&#xff0c;此时可以参考如下步骤&#xff1a; 方法一&#xff1a;清除npm本地缓存&#xff0c;有时缓存也会造成npm安装缓慢。 npm cache clean --force npm i方法二&#xff1a;切换至国内镜像源。 npm config set registry h…

Java-树

一&#xff0c;树 1.1 概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 。 它具有以下的特点…

ASP.NET Core 中间件

一、什么是中间件&#xff1f; 中间件 是一种装配到 ASP.NET Core 应用程序请求处理管道中的软件组件&#xff0c;用于处理 HTTP 请求和响应。 每个中间件组件可以&#xff1a; 选择是否将请求传递到下一个中间件&#xff1a;通过调用 next() 或者不调用 next() 来决定是否将…

IP学习——oneday

1.什么是网络&#xff1f;为什么需要网络&#xff1f; 空间&#xff0c;时间&#xff1b;传统的邮件传输要考虑到距离&#xff0c;网络解决了空间距离&#xff08;太远&#xff09;、解决了时间问题&#xff08;旧音乐等&#xff09; 云:面向客户的虚拟化服务 运营商公司主营…

SQL 支持使用 GROUP BY多个列

SQL 语言支持使用 GROUP BY 子句对多个列进行分组。当你对多个列进行分组时&#xff0c;SQL 会根据这些列的组合值来分组数据。这意味着只有当所有指定的列在多行中具有相同的值时&#xff0c;这些行才会被分组在一起。 语法 SELECT column1, column2, AGGREGATE_FUNCTION(co…