Spring: 后端状态码如何与http状态码保持一致

一、背景

今天使用postman在做接口测试的时候发现了一个有趣的问题:响应体的status和http的status一样,出于好奇对该现象进行了总结。
在这里插入图片描述

二、解决方案

通过拦截器ResponseBodyAdvice,做到统一拦截

@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. 如何理解 HTTP 状态

    2024-04-08 18:26:06       41 阅读
  2. 如何理解 HTTP 状态

    2024-04-08 18:26:06       34 阅读
  3. http状态

    2024-04-08 18:26:06       61 阅读
  4. Http 状态

    2024-04-08 18:26:06       56 阅读
  5. HTTP 状态

    2024-04-08 18:26:06       58 阅读
  6. http 状态

    2024-04-08 18:26:06       49 阅读
  7. Http状态

    2024-04-08 18:26:06       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 18:26:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 18:26:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 18:26:06       87 阅读
  4. Python语言-面向对象

    2024-04-08 18:26:06       96 阅读

热门阅读

  1. Linux学习第六天(进程)

    2024-04-08 18:26:06       26 阅读
  2. 算法| ss 二分

    2024-04-08 18:26:06       36 阅读
  3. Linux基本命令入门详解

    2024-04-08 18:26:06       33 阅读
  4. ubunut 18.04安装gcc-9 g++-9

    2024-04-08 18:26:06       29 阅读
  5. AI技术创业机会之金融科技

    2024-04-08 18:26:06       29 阅读
  6. MQ5之CCI交叉信号

    2024-04-08 18:26:06       32 阅读