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;
        }
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    日期时间插件
    QQ在线客服
    dede轮播图
    Animation 案例解释
    transition Css3过度详解
    解决文字无法缩小的问题
    DEDE函数
    hdu 3435 图回路分割
    HDU 4183
    hdu 1569 最小割
  • 原文地址:https://www.cnblogs.com/hujunwei/p/15709899.html
Copyright © 2011-2022 走看看