zoukankan      html  css  js  c++  java
  • SpringBoot系列【响应结果统一处理】

    代码

    @Slf4j
    @ControllerAdvice(basePackages = {"com.fast.controller"})
    public class ControllerResponseAdvice implements ResponseBodyAdvice<Object> {
        @Override
        public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
            // response是Result类型,或者注释了NotResponseResult都不进行包装
            return !(methodParameter.getParameterType().isAssignableFrom(R.class)
                    || methodParameter.hasMethodAnnotation(NotResponseResult.class));
        }
    
        @Override
        public Object beforeBodyWrite(Object data, MethodParameter returnType, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest request, ServerHttpResponse response) {
            // String类型不能直接包装
            ObjectMapper objectMapper = new ObjectMapper();
            if (returnType.getGenericParameterType().equals(String.class)) {
                try {
    //                 将数据包装在Result里后转换为json串进行返回
                    return objectMapper.writeValueAsString(R.ok(data));
                } catch (JsonProcessingException e) {
                    throw new RuntimeException(e.getMessage());
                }
            }
            // 否则直接包装成Result返回
            return objectMapper;
        }
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    Web前端笔记和简历模板
    三种 Loading 制作方案
    注册中心之健康检测机制
    HTTPS与加密
    多线程-JUC
    date日期类型
    spring配置文件约束
    Tomcat web.xml 中的listener、 filter、servlet 加载顺序
    java 日志框架总结
    mysql常用命令
  • 原文地址:https://www.cnblogs.com/hujunwei/p/15709899.html
Copyright © 2011-2022 走看看