后端返回状态码的几种方式
前端调用后端接口时,需要关注接口返回的状态码,由状态码来判断请求是否成功。
比如,500是服务器端的错误,404可能是请求路径找不到。
后端返回状态码有以下几种方式:
1.使用spring ResponseEntity
ResponseEntity是通用类型,因此可以使用任意类型作为响应体。
@GetMapping("/helloworld")
ResponseEntity<String> hello() {
return new ResponseEntity<>("Hello World!", HttpStatus.OK);
}
ResponseEntity包含状态码、头部信息以及相应体内容。
还可以为其设置响应头
@GetMapping("/header")
ResponseEntity<String> setHeader() {
HttpHeaders headers = new HttpHeaders();
headers.add("grant_type", "authorization_code");
return new ResponseEntity<>(
"header set", headers, HttpStatus.OK);
}
ResponseEntity还提供了两个内嵌的构建器接口: HeadersBuilder 和其子接口 BodyBuilder。因此我们能通过ResponseEntity的静态方法直接访问。
ResponseEntity.BodyBuilder ok();
ResponseEntity.BodyBuilder created(URI location);
ResponseEntity.BodyBuilder accepted();
ResponseEntity.HeadersBuilder<?> noContent();
ResponseEntity.BodyBuilder badRequest();
ResponseEntity.HeadersBuilder<?> notFound();
@GetMapping("/helloworld")
ResponseEntity<String> hello() {
return ResponseEntity.ok("Hello World!");
}
2.使用HttpServletResponse
HttpServletResponse对象它可以看程是服务器的响应。
这个对象中封装了向客户端发送数据、发送响应头、发送状态码的方法。
可以使用HttpServletResponse向前端返回响应状态码
public void hello(HttpServletResponse response){
response.setStatus(204);
}
3.使用@ResponseStatus()注解
@ResponseStatus可以改变HTTP响应的状态码,
@RequestMapping("/hello")
@ResponseStatus(HttpStatus.CREATED)
public void hello(HttpServletResponse response){
//业务代码
}
使用@ResponseStatus,在处理方法正确执行的前提下,后台返回HTTP响应的状态码为@ResponseStatus指定的状态码