如果你写的接口没有统一返回结果,一个一个接口去修改效率是很低的,可以设置统一返回结果;
代码如下:
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; } }