zoukankan      html  css  js  c++  java
  • SpringBoot之返回统一结果

    如果你写的接口没有统一返回结果,一个一个接口去修改效率是很低的,可以设置统一返回结果;

    代码如下:

    import com.emi2c.mybatis.entity.Result;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.core.MethodParameter;
    import org.springframework.http.MediaType;
    import org.springframework.http.server.ServerHttpRequest;
    import org.springframework.http.server.ServerHttpResponse;
    import org.springframework.web.bind.annotation.RestControllerAdvice;
    import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
    
    import java.util.Objects;
    
    /**
     * 返回统一结果
     */
    @RestControllerAdvice(basePackages = "com.emi2c.mybatis.controller")
    public class ResponseAdvice implements ResponseBodyAdvice {
    
        private static final Logger logger = LoggerFactory.getLogger(ResponseAdvice.class);
    
        @Override
        public boolean supports(MethodParameter methodParameter, Class aClass) {
            return true;
        }
    
    
        /**
         * @param o  接口返回数据
         * @param methodParameter
         * @param mediaType
         * @param aClass
         * @param serverHttpRequest
         * @param serverHttpResponse
         * @return
         */
        @Override
        public Object beforeBodyWrite(Object o, MethodParameter methodParameter, 
    MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { String methodName
    = methodParameter.getMethod().getName(); String parameterName = methodParameter.getParameterName(); logger.info("method: {}, param: {}", methodName, parameterName); Result result = new Result(); if (Objects.isNull(o)) { result.setMessage("success"); return result; } if (o instanceof Result) { return o; } result.setMessage("success"); result.setData(o); return result; } }

    Result类:

    /**
     * 统一返回结果
     * @param <T>
     */
    public class Result<T> {
    
        public static final int success = 0;
        public static final int fail = 1;
        private int status = success;
        private String message = "success";
        private T data;
    
        public int getStatus() {
            return status;
        }
    
        public void setStatus(int status) {
            this.status = status;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public T getData() {
            return data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    
    }
  • 相关阅读:
    移动端应用rem定义相对长度单位
    ionic4(angular) 生成browser平台的(webApp)在手机QQ浏览器不更新页面
    解决 git bash命令行执行git命令一直报错 segmentation fault
    MACBOOK OSX升级到10.15.3 Catalina 后 photoshop CS6(32位)不能用了
    自制操作系统笔记-第三章
    自制操作系统笔记-第2章
    自制操作系统笔记-第一章
    Vue学习笔记
    解决 MAC 终端上每次打开新窗口手动执行source ~/.bash_profile导出环境变量
    HTTPS的安全性
  • 原文地址:https://www.cnblogs.com/mxh-java/p/14319420.html
Copyright © 2011-2022 走看看