主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法!!!
前言
主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法!!!
提示:以下是本篇文章正文内容,下面案例可供参考
请求响应:
- 请求(HttpServletRequest):获取请求数据
- 响应(HttpServletResponse):设置响应数据
- BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(维护方便、体验一般)
- CS架构:Client/Server,客户端/服务器架构模式。(开发、维护麻烦,体验不错)
前后端分离
当前最为主流的开发模式:前后端分离
Postman
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试
简单参数
原始方式
在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。
@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
int age = Integer.parseInt(ageStr);
System.out.println(name+" : "+age);
return "OK";
}
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") String username,@RequestParam(name = "age") Integer age) {
System.out.println(username+" : "+age);
return "OK";
}
注意事项:
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。、
实体参数
简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
public class User {
private String name;
private int age;
}
@RequestMapping("/simplePojo")
public String simplePojo(User user){
System.out.println(user);
return "OK";
}
复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。
public class User {
private String name;
private int age;
private Address address;
}
public class Address {
private String province;
private String city;
}
@RequestMapping("/complexPojo")
public String complexPojo(User user){
System.out.println("user");
return "OK";
}
规则:请求参数名与形参对象属性名相同,即可直接通过POJO接收
数组集合参数
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "OK";
}
集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "OK";
}
数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装
集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系
日期参数
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
System.out.println(updateTime);
return "OK";
}
JSON 参数
JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
public class Address {
private String province;
private String city;
}
public class User {
private String name;
private int age;
private Address address;
}
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "OK";
}
路径参数
路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
@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";
}
总结
简单参数:
- 定义方法形参,请求参数名与形参变量名一致。
- 如果不一致,通过@RequestParam手动映射。
实体参数:
- 请求参数名,与实体对象的属性名一致,会自动接收封装
数组集合参数:
- 数组:请求参数名与数组名一致,直接封装
- 集合:请求参数名与集合名一致,@RequestParam绑定关系
日期参数:
- @DateTimeFormat
JSON参数:
- @RequestBody
路径参数:
- @PathVariable