1.@RequestBody
- POST方式, 接收前端传递给后端的json字符串的数据(请求体中的数据);
- @RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个,当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value 里面的参数(localhost:9534/mytest3?token=admin)
- json字符串中,如果value为""的话,后端对应属性如果是String类型的,那么接受到的就是"",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null
- json字符串中,如果value为null的话,后端对应收到的就是null
- 具体详情请点击这里
2.@ResponseBody
- 将方法的返回值,以特定的格式(json等)写入到response的body区域,进而将数据返回给客户端
- 可以注解在方法上,方法返回类型前,或者联合@Controller 变成@RestController 注解在类上
3.@RequestParam
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
- 在get请求下,与key 比配,获取对应的value
- 在post请求下,使用@RequestParam
@PostMapping("/test/getByArray")
public ResponseBO<List<String>> getByArray(@RequestParam String ids){
log.debug("REST request to get testData");
List<String> idList = null;
if (ids!=null){
idList = Arrays.asList(ids.split(","));
}
List<String> list1 = tVulAssetsService.getByArray(idList);
return new ResponseBO<>(list1,SUCCESS);
}
postman 示例如下:
4.@PathVariable
@RequestParam 和 @PathVariable 注解是用于从 request 中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从 request 里面拿取值,而 @PathVariable 是从一个URI模板里面来填充