Spring: 后端状态码如何与http状态码保持一致

文章目录

一、背景

今天使用postman在做接口测试的时候发现了一个有趣的问题:响应体的status和http的status一样,出于好奇对该现象进行了总结。

二、解决方案

通过拦截器ResponseBodyAdvice,做到统一拦截

java 复制代码
@ControllerAdvice(basePackages = "*.*.*")
@RestControllerAdvice(basePackages = "*.*.*")
public class GlobalBizResponseBodyAdvice implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return true;
    }

    @Override
    public 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);
    }
相关推荐
Yeats_Liao17 分钟前
Spring 框架:配置缓存管理器、注解参数与过期时间
java·spring·缓存
Yeats_Liao17 分钟前
Spring 定时任务:@Scheduled 注解四大参数解析
android·java·spring
码明17 分钟前
SpringBoot整合ssm——图书管理系统
java·spring boot·spring
某风吾起22 分钟前
Linux 消息队列的使用方法
java·linux·运维
xiao-xiang25 分钟前
jenkins-k8s pod方式动态生成slave节点
java·kubernetes·jenkins
zhu090215010235 分钟前
minio https配置
网络协议·http·https
取址执行36 分钟前
Redis发布订阅
java·redis·bootstrap
鹅肝手握高V五色37 分钟前
免费代理抓包工具SniffMaster(嗅探大师)抓取https
网络协议·http·https
S-X-S1 小时前
集成Sleuth实现链路追踪
java·开发语言·链路追踪
快乐就好ya1 小时前
xxl-job分布式定时任务
java·分布式·spring cloud·springboot