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;
        }
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    JavaWeb笔记:连接数据库
    Android笔记:ViewGroup
    Java笔记:异常
    Java笔记:文件夹操作
    Java笔记:有啥记啥
    Java笔记:Number
    Java笔记:修饰符
    数据仓库之启用cdc
    多线程之线程池任务管理通用模板
    关于RESTful 的使用(实战)
  • 原文地址:https://www.cnblogs.com/hujunwei/p/15709899.html
Copyright © 2011-2022 走看看