欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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中,要加这个注释

相关标签: springboot