Java中的6种请求方式的示例详解

 更新时间:2024年07月19日 09:23:36   作者:码农研究僧  
这篇文章主要详细介绍了Java中的6种请求方式,@RequestParam、@PathVariable、@MatrixVariable、@RequestBody、@RequestHeader和@CookieValue的基本知识、详细分析以及示例,需要的朋友可以参考下

主要围绕如下请求方式:

@RequestParam、@PathVariable、@MatrixVariable、@RequestBody、@RequestHeader和@CookieValue的基本知识、详细分析以及示例

1. @RequestParam

用于绑定HTTP请求参数到控制器方法的参数上,常用于处理表单数据或查询参数

@GetMapping("/greeting")
public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name) {
    return "Hello, " + name;
}

基本的属性如下:

  • value 或 name: 参数名
  • required: 是否为必需参数,默认为true
  • defaultValue: 参数的默认值

具体调用两种方式:

  • /greeting?name=John,输出Hello, John
  • /greeting,输出默认值 Hello, World

2. @PathVariable

用于绑定URL中的模板变量到控制器方法的参数上,常用于RESTful风格的URL路径中

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

基本的属性如下:

  • value 或 name: 路径变量名。
  • required: 是否为必需参数,默认为true

请求方式: /users/1,用户ID为1的用户对象

3. @MatrixVariable

用于绑定URL路径中的矩阵变量到控制器方法的参数上,需要在Spring MVC中启用矩阵变量支持
常与路径变量结合使用

@GetMapping("/owners/{ownerId}/pets/{petId}")
public Pet findPet(@PathVariable String ownerId, 
                   @MatrixVariable(name="q", pathVar="petId") int query) {
    // 处理代码
}

基本的属性如下:

  • value 或 name: 矩阵变量名
  • pathVar: 矩阵变量所属的路径变量名

具体调用方式如下:
/owners/42/pets/21;q=123,提取: ownerId 为42, petId 为21, q 为123

4. @RequestBody

用于将HTTP请求体的内容绑定到控制器方法的参数上,常用于处理JSON、XML等格式的请求数据

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    return userService.save(user);
}
  • required: 是否为必需参数,默认为true

具体调用方式如下:

HTTP POST请求,内容: {“name”: “John”, “age”: 30}
返回: 创建的用户对象

5. @RequestHeader

用于绑定HTTP请求头到控制器方法的参数上

@GetMapping("/header")
public String getHeader(@RequestHeader("User-Agent") String userAgent) {
    return "User-Agent: " + userAgent;
}
  • value 或 name: 请求头名
  • required: 是否为必需参数,默认为true
  • defaultValue: 参数的默认值

具体调用方式如下:

设置请求头User-Agent
返回: 用户代理信息

6. @CookieValue

用于绑定HTTP请求的Cookie值到控制器方法的参数上

@GetMapping("/cookie")
public String getCookie(@CookieValue(value = "sessionId", defaultValue = "defaultSessionId") String sessionId) {
    return "Session ID: " + sessionId;
}

具体的属性如下:

  • value 或 name: Cookie名
  • required: 是否为必需参数,默认为true
  • defaultValue: 参数的默认值

具体调用方式如下:

设置Cookie sessionId
返回: 会话ID信息

7. 总结

注解作用属性示例调用
@RequestParam绑定HTTP请求参数到控制器方法的参数上value, required, defaultValue/greeting?name=John
@PathVariable绑定URL中的模板变量到控制器方法的参数上value, required/users/1
@MatrixVariable绑定URL路径中的矩阵变量到控制器方法的参数上value, pathVar/owners/42/pets/21;q=123
@RequestBody将HTTP请求体的内容绑定到控制器方法的参数上requiredHTTP POST 请求,内容: {“name”: “John”}
@RequestHeader绑定HTTP请求头到控制器方法的参数上value, required, defaultValue设置请求头User-Agent
@CookieValue绑定HTTP请求的Cookie值到控制器方法的参数上value, required, defaultValue设置Cookie sessionId

以上就是Java中的6种请求方式的示例详解的详细内容,更多关于Java请求方式的资料请关注脚本之家其它相关文章!

相关文章

  • Java基础之关键字final详解

    Java基础之关键字final详解

    这篇文章主要介绍了Java基础之关键字final详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • SpringBoot使用PropertiesLauncher加载外部jar包

    SpringBoot使用PropertiesLauncher加载外部jar包

    这篇文章主要介绍了SpringBoot使用PropertiesLauncher加载外部jar包,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Mybatis批处理、Mysql深分页操作

    Mybatis批处理、Mysql深分页操作

    这篇文章主要介绍了Mybatis批处理、Mysql深分页操作,Mybatis批量操作包括Foreach方式和ExecutorType.BATCH插入操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • AQS核心流程解析cancelAcquire方法

    AQS核心流程解析cancelAcquire方法

    可以清楚的看到在互斥锁和共享锁的拿锁过程中都是有调用此方法的,而cancelAcquire()方法是写在finally代码块中,并且使用failed标志位来控制cancelAcquire()方法的执行
    2023-04-04
  • Mybatis Lombok使用方法与复杂查询介绍

    Mybatis Lombok使用方法与复杂查询介绍

    Lombok是一种Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • springboot循环依赖问题案例代码及解决办法

    springboot循环依赖问题案例代码及解决办法

    在 Spring Boot 中,如果两个或多个 Bean之间存在循环依赖(即 Bean A 依赖 Bean B,而 Bean B 又依赖 Bean A),会导致 Spring 的依赖注入机制无法正确处理,从而抛出异常,下面给大家介绍springboot循环依赖问题及其解决办法,感兴趣的朋友一起看看吧
    2025-04-04
  • MyBatisPlus查询报错Unknow column ‘id‘ in ‘field list‘解决分析

    MyBatisPlus查询报错Unknow column ‘id‘ in ‘field list‘解决分析

    这篇文章主要为大家介绍了MyBatisPlus查询报错Unknow column ‘id‘ in ‘field list‘解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java基础之static的用法

    Java基础之static的用法

    这篇文章主要介绍了Java基础之static的用法,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-05-05
  • 关于idea中出现nbsp和zwsp的完美解决办法

    关于idea中出现nbsp和zwsp的完美解决办法

    本文给大家介绍关于idea中出现nbsp和zwsp的解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-06-06
  • Spring Kafka中@KafkaListener注解的参数与使用小结

    Spring Kafka中@KafkaListener注解的参数与使用小结

    @KafkaListener注解为开发者提供了一种声明式的方式来定义消息监听器,本文主要介绍了Spring Kafka中@KafkaListener注解的参数与使用小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06

最新评论