无论是RestFul风格还是我们之前web阶段接触过的异步请求,都需要把数据转换成json放入响应体中。
1、数据放到响应体
我们的SpringMVC为我们提供了@ResponseBody来非常方便的把json放到响应体中。
@RequestBody可以加在类上和方法上面,具体代码请参考范例。
2、数据转换成json
SpringMVC可以帮我们进行json的转换,不过需要进行相应的配置(前面以及配置过了)。
只要把要转换的数据直接作为方法的返回值即可,SpringMVC会帮我们把返回值转换成json,具体的代码请参考范例。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</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;
}
如果一个Controller中的所有方法返回值都要放入响应体,那么我们可以直接在Controller类上加上@ReponseBody。可以直接使用@RestController,它等价于@Controller+@ReponseBody