使用spring ResponseEntity处理http响应

前言

使用spring时,达到同一目的通常有很多方法,对处理http响应也是一样。本文我们学习如何通过ResponseEntity设置http相应内容、状态以及头信息。

ResponseEntity

ResponseEntity标识整个http相应:状态码、头部信息以及相应体内容。因此我们可以使用其对http响应实现完整配置。
如果需要使用ResponseEntity,必须在请求点返回,通常在spring rest中实现。ResponseEntity是通用类型,因此可以使用任意类型作为响应体:

@GetMapping("/hello")
ResponseEntity hello() {
    return new ResponseEntity<>("Hello World!", HttpStatus.OK);
}

可以通过编程方式指明响应状态,所以根据不同场景返回不同状态:

@GetMapping("/age")
ResponseEntity age(
  @RequestParam("yearOfBirth") int yearOfBirth) {

    if (isInFuture(yearOfBirth)) {
        return new ResponseEntity<>(
          "Year of birth cannot be in the future", 
          HttpStatus.BAD_REQUEST);
    }

    return new ResponseEntity<>(
      "Your age is " + calculateAge(yearOfBirth), 
      HttpStatus.OK);
}

   @GetMapping("lsit")
    public ResponseEntity> queryCategoriesByid(@RequestParam(value = "pid",defaultValue = "0")Long pid){
        try {
            if (pid == null || pid < 0) {
                //400参数不合法
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();

            }
            List list = this.categoryService.queryCategoriesByPid(pid);
            if (CollectionUtils.isEmpty(list)) {
                //404资源服务器未找到
                return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
            }
            //200:查询成功
            return ResponseEntity.ok(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //500:服务器内部错误
        return  ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
    }

你可能感兴趣的:(使用spring ResponseEntity处理http响应)