SpringBootWeb请求响应

123 阅读3分钟

SpringBootWeb请求响应

请求

简单参数

  • 参数名与形参变量名相同,定义相同名字的形参即可接收参数
  • 如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 的name属性完成映射。
    • @RequestParam的required属性默认为true,代表请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false

总结:

  • 简单参数:
    • 请求参数名与方法形参变量名相同,会自动进行类型转换
  • @RequestParam注解:
    • 方法形参名称与请求参数名称不匹配,通过该注解完成映射,该注解的required属性默认是true,代表请求参数必须传递

实体参数

  • 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

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

    • public class User {
      	private String name;
          private Integer age;
          private Address address;
      }
      public class Address {
          private String province;
          private String city;
      }
      

      请求url:htttp://localhost:8080/pojo?name=tom&age=18&address.province=浙江&address.city=金华


总结:

  • 规则:请求参数名与形参对象属性名相同,即可直接通过POJO接收

数组集合参数

  • 数组参数:

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

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

      http://localhost:8080/arrayParam?hobby=game&hobby=java

  • 集合参数:

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

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

      http://localhost:8080/listParam?hobby=game&hobby=java


总结:

数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装

集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系


日期参数

  • 日期参数:

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

    • @RequestMapping("/dateParam")
      public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){		System.out.println(updateTime);
      	return "OK";
      }
      
    • pattern = "yyyy-MM-dd HH:mm:ss"pattern属性是时间的格式


JSON参数

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

路径参数

  • 路径参数:

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

    • URL:http://localhost:8080/path/1http://localhost:8080/path/1/Tom

    • @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";
      }
      

总结:

请求的总结.png


响应

  • 注解:
    • @ResponseBody
    • 类型:方法注解、类注解
    • 位置:Controller方法上/类上
    • 作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为JSON格式响应
    • 说明:@RestController = @Controller + @ResponseBody ;