本文主要是介绍Spring: 后端状态码如何与http状态码保持一致,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、背景
- 二、解决方案
一、背景
今天使用postman在做接口测试的时候发现了一个有趣的问题:响应体的status和http的status一样,出于好奇对该现象进行了总结。
二、解决方案
通过拦截器ResponseBodyAdvice,做到统一拦截
@ControllerAdvice(basePackages = "*.*.*")
@RestControllerAdvice(basePackages = "*.*.*")
public class GlobalBizResponseBodyAdvice implements ResponseBodyAdvice {@Overridepublic boolean supports(MethodParameter methodParameter, Class aClass) {return true;}@Overridepublic Object beforeBodyWrite(Object obj, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {if (obj instanceof BizResponse) {int code = (int) ((BizResponse) body).getCode();response.setStatusCode(HttpStatus.valueOf(code));return obj;}response.setStatusCode(HttpStatus.valueOf(200));return BizResponse.success(obj);}
这篇关于Spring: 后端状态码如何与http状态码保持一致的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!