1、ResponseEntity继承了HttpEntity,可以添加HttpStatus状态码的HttpEntity的扩展类。被用于RestTemplate和Controller层方法
2、ResponseEntity可以定义返回的HttpStatus(状态码)和HttpHeaders(消息头:请求头和响应头)HttpStatus的状态码有以下几种
3、ResponseEntity的优先级高于@ResponseBody。在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。简单的说
@ResponseBody可以直接返回Json结果,
@ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus
public ResponseEntity<List<Category>> queryCategoriesByPid(@RequestParam(value = "pid",defaultValue = "0") Long pid){
if(pid == null || pid.longValue()<0){
// 响应400,相当于ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
return ResponseEntity.badRequest().build();
}
//ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
// ResponseEntity.notFound().build();
// ResponseEntity.ok(null);
List<Category> categoryList = this.categoryService.queryCategoriesByPid(pid);
if(CollectionUtils.isEmpty(categoryList)){
// 响应404
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(categoryList);
}