@ResponseBody 提供了一种很有用的方式,能够将控制器返回的 Java 对象转换为发送到客户端的资源表述。
一个好的 REST API 不仅仅能够在客户端和服务器之间传递资源,他还能够给客户端提供额外的数据,帮助客户端理解资源或者在请求中发生了什么情况。
发送错误信息到客户端
例如,我们为 UserController 中添加一个新的处理器方法,它会提供单个 Spittle 对象。
@RestController
@RequestMapping("/user")
public class UserController {
Map<String, User> users = Collections.synchronizedMap(new HashMap<String, User>());
@RequestMapping(value = "/{id}",method = RequestMethod.GET, produces = "application/json")
public User getUserById (@PathVariable("id") String id){
//初始化用户信息
initUserInfo();
return users.get(id);
}
private void initUserInfo() {
User user1 = new User("123","zhaoben");
users.put(user1.getId(),user1);
}
}
以上代码中,利用 Map 模拟数据库查找操作,通过id(123)进行查询,然后他根据调用 getUserById() 方法,查找对应 User 对象。 处理器方法返回查询结果。消息转换器会负责产生客户端所需要的资源表述。
*如果,根据给定 id,无法找到某个 User 对象,则 getUserById 返回 null
的同时,HTTP 状态码为 200,所有的过程看起来都很合理。但是&#x