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);
    }
相关推荐
穿林鸟40 分钟前
Spring Boot项目信创国产化适配指南
java·spring boot·后端
此木|西贝1 小时前
【设计模式】模板方法模式
java·设计模式·模板方法模式
wapicn991 小时前
手机归属地查询Api接口,数据准确可靠
java·python·智能手机·php
forestsea1 小时前
HTTP 黑科技
科技·网络协议·http
hycccccch2 小时前
Springcache+xxljob实现定时刷新缓存
java·后端·spring·缓存
网络安全天地2 小时前
使用 Flutter 制作地图应用
websocket·网络协议·tcp/ip·http·网络安全·https·udp
wisdom_zhe2 小时前
Spring Boot 日志 配置 SLF4J 和 Logback
java·spring boot·logback
揣晓丹2 小时前
JAVA实战开源项目:校园失物招领系统(Vue+SpringBoot) 附源码
java·开发语言·vue.js·spring boot·开源
鸭梨大大大2 小时前
Spring Web MVC入门
前端·spring·mvc
于过2 小时前
Spring注解编程模型
java·后端