详细分析Java中的6种请求方式以及接口测试(附Demo)

前言

基本知识推荐阅读:

  1. @pathvariable 和 @Requestparam的详细区别
  2. 详细分析Java中的@RequestParam和@RequestBody
  3. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  4. 【Java项目】实战CRUD的功能整理(持续更新)

主要围绕如下请求方式:

@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
@RestController
@RequestMapping("/api")
public class MyController {

    @PostMapping("/testDate")
    public String testDate(@RequestBody Myrequest request) {
        Date startDate = request.getStartDate();
        return "Received date: " + startDate;
    }

    @RequestMapping("/processDate")
    public String processDate(@RequestParam("myDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date myDate) {
        // 处理日期逻辑
        return "Received date: " + myDate;
    }

}

对于Postman的使用方式如下:

在这里插入图片描述

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}
返回: 创建的用户对象

@RestController
@RequestMapping("/api")
public class MyController {

    @PostMapping("/testDate")
    public String testDate(@RequestBody Myrequest request) {
        Date startDate = request.getStartDate();
        return "Received date: " + startDate;
    }

    @RequestMapping("/processDate")
    public String processDate(@RequestParam("myDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date myDate) {
        // 处理日期逻辑
        return "Received date: " + myDate;
    }

}

对于Postman的使用方式如下:

在这里插入图片描述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值