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);
    }
相关推荐
逸狼5 分钟前
【JavaEE进阶】Spring DI
java·开发语言
yonuyeung8 分钟前
代码随想录算法【Day54】
java·数据结构·算法
敲上瘾14 分钟前
基础dp——动态规划
java·数据结构·c++·python·算法·线性回归·动态规划
my_styles34 分钟前
2025-alibaba-Sentinel组件
java·开发语言·sentinel
Dongwoo Jeong36 分钟前
类型系统下的语言分类与类型系统基础
java·笔记·python·lisp·fortran·type
肖帆咪37 分钟前
deepseek自动化代码生成
java·ai·自动化·ai编程·deepseek
web1508541593540 分钟前
超级详细Spring AI运用Ollama大模型
人工智能·windows·spring
刘小炮吖i42 分钟前
Java 集合:单列集合和双列集合的深度剖析
java·集合
float_六七1 小时前
Java——单例类设计模式
java·单例模式·设计模式