SpringBoot 中常用注解@PathVaribale/@RequestParam/@RequestBody/@ResponseBody详解介绍
程序员文章站
2022-04-27 20:27:57
...
其中,各注解的作用为:
- @PathVaribale 获取url中的数据
url的格式为:localhost:8080/eduservice/id - @RequestParam 获取请求参数的值
url的格式为:localhost:8080/eduservice?id=100
@PathVaribale 获取url中的数据
看一个例子,如果我们需要获取Url=localhost:8001/eduservice/id中的id值,实现代码如下:
//逻辑删除讲师的方法
//id值需要通过路径来传递
@ApiOperation(value = "根据ID删除讲师") //swagger测试更加清晰
@DeleteMapping("{id}")
public R removeTeacher(
//swagger测试更加清晰
@ApiParam(name = "id", value = "讲师ID", required = true)
//@PathVaribale 获取url中的数据
@PathVariable("id") String id){
boolean flag = teacherService.removeById(id);
if(flag) return R.ok();
else return R.error();
}
以上,通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。
只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
@RequestParam 获取请求参数的值
当我们在浏览器中输入地址:localhost:8080/hello?id ,即不输入id的具体值,此时返回的结果为null。
但是,当我们在浏览器中输入地址:localhost:8080/hello ,即不输入id参数,则会报错。
@RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值,具体代码如下:
@RestController
public class EduController {
@GetMapping("{id}")
//required=false 表示url中可以不传入id参数,此时就使用默认参数
public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
return "id:"+id;
}
}
@RequestBody
基础知识介绍:
1、 @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
2、 GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
总体来说,@RequestBody以对象形式接收前端传过来的json数据
@RestController
public class EduTeacherController {
//5添加讲师,post提交
//以EduTeacher对象的形式接收前端传过来的json数据
@PostMapping("addTeacher")
public R addTeacher(@RequestBody EduTeacher eduTeacher){
boolean save = teacherService.save(eduTeacher);
return save ? R.ok() : R.error();
}
下面是一篇关于@RequestBody的使用十分详细的博文,有待之后继续学习。
@ResponseBody
@ResponseBody的作用其实是将java对象转为json格式的数据。
@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
//为了返回数据,不是在controller中,要加这个注释