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);
    }
相关推荐
蚰蜒螟8 分钟前
从 Java SocketChannel 到 TCP 挥手:一次 close() 的完整调用链与引用计数解析
java·python·tcp/ip
damoluomu11 分钟前
国产 Java CMS 的协议和坑,讲清楚
java·开发语言
Wang's Blog18 分钟前
Java 项目实战: 交友项目 - 黑名单:分页查询黑名单
java·开发语言·交友
蚰蜒螟22 分钟前
从 Java write 到磁盘扇区:一次写入操作的完整内核穿越之旅
java·开发语言
en.en..34 分钟前
volatile 关键字整理(嵌入式 C 标准)
java·开发语言
酒神dnspup37 分钟前
HTTP Keep-Alive 与连接池实战:TIME_WAIT、端口耗尽和复用率怎么排查
http·keep-alive·tcp·连接池
captain37639 分钟前
Spring IoC和DI(2)
java·后端·spring
Shaoshing41 分钟前
高可用与核心概念
java·mq
2501_933923251 小时前
SpringCloud组件:Nacos服务注册快速入门
后端·spring·spring cloud·nacos