无论是RestFul风格还是我们之前web阶段接触过的异步请求,都需要把数据转换成json放入响应体中。

1、数据放到响应体

我们的SpringMVC为我们提供了@ResponseBody来非常方便的把json放到响应体中。
@RequestBody可以加在类上和方法上面,具体代码请参考范例。

2、数据转换成json

SpringMVC可以帮我们进行json的转换,不过需要进行相应的配置(前面以及配置过了)。
只要把要转换的数据直接作为方法的返回值即可,SpringMVC会帮我们把返回值转换成json,具体的代码请参考范例。

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-databind</artifactId>
  4. <version>2.9.0</version>
  5. </dependency>

然后还需要配置注解驱动。

 <mvc:annotation-driven/>

3、范例

范例一

要求定义一个RestFul风格的接口,该接口可以用来根据id查询用户,
请求路径要求为 /reponseTest,请求方式要求为GET。
请求参数id要求写在请求路径上面上面,例如 /reponseTest/1 这里的1就是id。
要求获取参数id,去查询对应的id的用户信息(模拟查询即可,可以选择直接new一个User对象),并且转换成json响应到响应体中。

@GetMapping("/reponseTest/{id}")
    @ResponseBody
    public User test02(@PathVariable("id")Integer id){
        System.out.println("成功");
        User user=new User(id,null,null);
        return user;
    }

范例二

要求定义一个RestFul风格的接口,该接口可以查询所有用户。
请求路径要求为 /responseTest2,请求方式要求为GET。
去查询所有的用户信息(模拟查询即可,可以选择直接创建集合,添加几个User对象),
并且转成json响应到响应体中。

@GetMapping("/reponseTest2")
   @ResponseBody
    public List<User> test02(){
       List<User> list=new ArrayList<>();
       list.add(new User(1,"张三",23));
       list.add(new User(2,"李四",21));
       list.add(new User(3,"王五",23));
    return list;
   }

Snipaste_2021-08-02_07-39-45.jpg

如果一个Controller中的所有方法返回值都要放入响应体,那么我们可以直接在Controller类上加上@ReponseBody。可以直接使用@RestController,它等价于@Controller+@ReponseBody