请求响应
请求
Postman
- Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件
- 作用:常用于接口测试
注意:下面这部分参数的代码都是在Controller中所写的
简单参数
简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。
后端服务器接收传递过来的简单参数数据
接收方式
方式一 原始方式(了解即可开发不会使用)
@RestController
public class RequestController {
@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
// http://localhost:8080/simpleParam?name=Tom&age=10
// 请求参数: name=Tom&age=10 (有2个请求参数)
// 第1个请求参数: name=Tom 参数名:name,参数值:Tom
// 第2个请求参数: age=10 参数名:age , 参数值:10
String name = request.getParameter("name");//name就是请求参数名
String ageStr = request.getParameter("age");//age就是请求参数
名
int age = Integer.parseInt(ageStr);//需要手动进行类型转换
System.out.println(name+" : "+age);
return "OK";
}
方式二 springboot方式
形参名与请求参数名相同
@RestController
public class RequestController {
// http://localhost:8080/simpleParam?name=Tom&age=10
// 第1个请求参数: name=Tom 参数名:name,参数值:Tom
// 第2个请求参数: age=10 参数名:age , 参数值:10
//springboot方式
@RequestMapping("/simpleParam")
public String simpleParam(String name , Integer age ){//形参名和
请求参数名保持一致!!!!!!
System.out.println(name+" : "+age);
return "OK";
}
}
形参名与请求参数名不同
解决:使用Spring提供的@RequestParam注解完成映射 意思是从HTTP请求中获取名为 "name" 的参数,并将其映射到方法的 String 类型参数 username 上,required = false 表示参数是可选的,如果请求中没有名为 "name" 的参数,不会抛出异常,而是将 username 参数设为 null。默认required = true 如果请求中没有名为 "name" 的参数,会抛出异常。
@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name", required =
false) String username, Integer age){
System.out.println(username+ ":" + age);
return "OK";
}
实体参数
参数为实体类 User user
请求参数名要与实体类属性名一致,不一致为null
数组集合参数
数组参数
Controller方法
@RestController
public class RequestController {
//数组参数
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
System.out.println(Arrays.toString(hobby));//把数组转化为字符串[game,java]
return "OK";
}
}
Postman请求
方式一:hobby=game&hobby=java
方式二:hobby=game,java
集合参数
Controller方法
@RestController
public class RequestController {
//集合参数
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){//将请求参数的值绑定到集合hobby上
System.out.println(hobby);
return "OK";
}
}
日期参数
Controller方法
@RestController
public class RequestController {
//日期时间参数
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd
HH:mm:ss") LocalDateTime updateTime){ //@DateTimeFormat注解的pattern属性中指定了哪种日期格式,前端的日期参数就必须按照指定
//的格式传递。需要使用Date类型或LocalDateTime类型,来封装传递的参数。
System.out.println(updateTime);
return "OK";
}
}
JSON参数
Postman发送JSON格式数据:
Controller方法接收参数
@RequestBody注解:将JSON数据映射到形参的实体类对象中(JSON中的key和实体类中的属性名保持一致)
@RestController
public class RequestController {
//JSON参数
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "OK";
}
}
路径参数
传统的开发中请求参数是放在请求体(POST请求)传递或跟在URL后面通过?key=value的形式传递 (GET请求)。
路径参数:直接在请求的URL中传递参数,比如:http://localhost:8080/user/1
后端如何接收路径参数
//传递多个路径参数
@RestController
public class RequestController {
//路径参数
@RequestMapping("/path/{id}/{name}")//因为前端请求的路径参数是可变的,所以后端在收到数据时,使用{key}方式来标记路径参数
public String pathParam2(@PathVariable Integer id, @PathVariable
String name){//@PathVariable 注解:获取路径参数{id},把路径参数绑定到形参变量id
System.out.println(id+ " : " +name);
return "OK";
}
}
出现的小问题
响应
类加载器---动态代理部分有讲,,反射,,xmldom4j解析基础