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);
    }
相关推荐
这不小天嘛7 小时前
JAVA八股——J集合篇
java·开发语言
什巳10 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
豆瓣鸡10 小时前
RocketMQ学习-Spring Boot消息实践
java·spring boot·rocketmq
wuqingshun31415910 小时前
说一下mysql的覆盖索引
java
罗超驿11 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法
heimeiyingwang11 小时前
【架构实战】缓存一致性:Cache Aside与双写问题的破解
spring·缓存·架构
栈溢出了11 小时前
Redis 分片集群与哈希槽笔记
java·redis·笔记·spring
遨游DATA12 小时前
Spring Boot 启动失败排查:如何区分多 Bean 冲突与清理阶段异常
java·spring boot·后端
wabs66612 小时前
关于单调栈【力扣739.每日温度的思考】
java·开发语言
雪碧聊技术13 小时前
为什么要学函数式编程?
java·函数式编程