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;
    }

}
原文地址:https://www.cnblogs.com/mxh-java/p/14319420.html