理解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用
-
@PathVariable:处理requet uri 部分
-
@RequestHeader, @CookieValue:处理request header部分
-
@RequestParam, @RequestBody:处理request body部分
-
@SessionAttributes, @ModelAttribute:处理attribute类型
-
@PathVariable
//代码把URI template 中变量 id的值,绑定到方法的参数上
@RestController
@RequestMapping("spec")
public class SpecificationController {
@DeleteMapping("group/{id}")
public void deletebyid(@PathVariable("id")Long id ){
this.specificationService.deletebyid(id);
}}
- @RequestBody
//常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
//它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
@RestController
@RequestMapping("spec")
public class SpecificationController {
@PostMapping("param")
public ResponseEntity<List<SpecParam>> insert(@RequestBody SpecParam specParam){
this.specificationService.add(specParam);
return ResponseEntity.ok(null);
}
}
- @RequestParam
//1.常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
//2.用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
//3.该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
@RestController
@RequestMapping("category")
public class CategoryController {
@GetMapping("selectById")
public Category selectById(@RequestParam(value = "id",defaultValue = "0") long id){
return this.categoryService.selectById(id);
}
}