请求

SOBER大约 3 分钟

请求

Postman 工具

Postman 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件。

作用:常用于进行接口测试

下载:https://postman.xiniushu.com/docs/getting-started/download-postmanopen in new window

简单参数

原始方式

在原始的 web 程序中,获取请求参数,需要通过 HttpServletRequest 对象手动获取。

@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
    String name=request.getParameter("name"),
    String ageStr = request.getParameter("age");
    int age =Integer.parselnt(ageStr);
    System.out.println(name+" :"+age);
    return "Ok";
}

使用 Postman 测试

SpringBoot方式

简单参数:参数名与形参变量名相同,定义形参即可接收参数。

@RequestMapping("/simpleParam")
public String simpleParam(String name, Integer age){
  System.out.println(name + ":" + age);
  return "OK";
}

如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name", required = false) String username, Integer age){
  System.out.println(username + ":" + age);
  return "OK";
}

使用 Postman 测试

注意

@RequestParam 中的 required 属性默认为 true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将 required 属性设置为 false

实体参数

简单实体对象

请求参数名 与 形参对象属性名 相同,定义 POJO 接收即可

  1. 创建 User 实体类
    public class User {
    private String name;
    private Integer age;
    
    public String getName() {
        return name;
    }
    
    public Integer getAge() {
        return age;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public void setAge(Integer age) {
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    }
    
  2. controller 中
    @RequestMapping("/pojoUser")
    public String pojoUser(User user) {
        System.out.println(user);
        return "ok";
    }
    
  3. 使用 Postman 测试

复杂实体对象

请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套 POJO 属性参数

  1. 创建 Address
     public class Address {
         private String city;
         private String province;
    
         public String getCity() {
             return city;
         }
    
         public void setCity(String city) {
             this.city = city;
         }
    
         public String getProvince() {
             return province;
         }
    
         public void setProvince(String province) {
             this.province = province;
         }
    
         @Override
         public String toString() {
             return "Address{" +
                     "city='" + city + '\'' +
                     ", province='" + province + '\'' +
                     '}';
         }
     }
    
  2. 创建 User 实体类
     public class User {
         private String name;
         private Integer age;
         private Address address;
    
         public String getName() {
             return name;
         }
    
         public Integer getAge() {
             return age;
         }
    
         public void setName(String name) {
             this.name = name;
         }
    
         public void setAge(Integer age) {
             this.age = age;
         }
    
         public Address getAddress() {
             return address;
         }
    
         public void setAddress(Address address) {
             this.address = address;
         }
    
         @Override
         public String toString() {
             return "User{" +
                     "name='" + name + '\'' +
                     ", age=" + age +
                     ", address=" + address +
                     '}';
         }
     }
    
  3. controller 中
     @RequestMapping("/pojoAddress")
     public String pojoAddress(User user) {
         System.out.println(user);
         return "ok";
     }
    
  4. 使用 Postman 测试

数组集合参数

数组参数

请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

controller 中

@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
    System.out.println(Arrays.toStrig(hobby));
    return "Ok";
}

使用 Postman 测试

集合参数

请求参数名 与 形参集合名称 相同 且 请求参数为 多个,@RequestParam 绑定参数关系 controller 中

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "Ok";
};

使用 Postman 测试

日期参数

日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换

controller 中

@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
    System.out.println(updateTime);
    return "OK";
}

使用 Postman 测试

Json 参数

JSON 数据 键名 与 形参对象属性 名 相同,定义 POJO 类型形参即可接收参数,需要使用 @RequestBody 标识

controller 中

@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user) {
    System.out.println(user);
    return "ok";
}

使用 Postman 测试

路径参数

通过请求 URL 直接传递参数,使用 {...} 来标识该路径参数,需要使用 @PathVariable 获取路径参数

controller 中

// 单个参数
@RequestMapping("/path/{id}")
public String pathParam(@PathVariable integer id) {
    System.out.println(id);
    return "ok";
}

// 多个参数
@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable integer id, @PathVariable String name,) {
    System.out.println(id + ": " + name);
    return "ok";
}

使用 Postman 测试 (单个参数)

使用 Postman 测试 (多个参数)