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);
    }
相关推荐
越来越无动于衷1 小时前
基于 JWT 的登录验证功能实现详解
java·数据库·spring boot·mysql·mybatis
飛_5 小时前
解决VSCode无法加载Json架构问题
java·服务器·前端
木棉软糖8 小时前
一个MySQL的数据表最多能够存多少的数据?
java
程序视点8 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
愿你天黑有灯下雨有伞8 小时前
Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
java·spring boot·spring
Java初学者小白9 小时前
秋招Day20 - 微服务
java
狐小粟同学9 小时前
JavaEE--3.多线程
java·开发语言·java-ee
-XWB-10 小时前
【安全漏洞】防范未然:如何有效关闭不必要的HTTP请求方法,保护你的Web应用
服务器·网络·http
KNeeg_10 小时前
Spring循环依赖以及三个级别缓存
java·spring·缓存
AI_Gump11 小时前
【AI阅读】20250717阅读输入
java·spring boot·spring