1、返回结果模型
@ApiModel("返回结果模型")
public class JsonResult<T> implements Serializable {
@ApiModelProperty("返回结果提示")
private String msg = null;
@ApiModelProperty("返回结果状态")
private String status = null;
@ApiModelProperty("返回结果数据")
private T result = null;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public JsonResult(){
}
public JsonResult(String status, String msg, T result){
this.status = status;
this.msg = msg;
this.result = result;
}
public JsonResult(String status, String msg){
this.status = status;
this.msg = msg;
}
public JsonResult(ResultEnum resultEnum){
this.status = resultEnum.getStatus();
this.msg = resultEnum.getMsg();
}
public JsonResult(ResultEnum resultEnum, T result){
this.status = resultEnum.getStatus();
this.msg = resultEnum.getMsg();
this.result = result;
}
}
2、返回编码枚举类模型
/**
* @author code
* @version 1.0
* @Date 2021/8/9 13:55
* @Description ${DESCRIPTION}
*/
public enum ResultEnum {
SUCCESS("ok","调用成功"),
ERROR("error","调用失败");
private String status;
private String msg;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
ResultEnum(String status,String msg){
this.status = status;
this.msg = msg;
}
}
3、返回结果工具类
/**
* @author code
* @version 1.0
* @Date 2021/7/22 15:50
* @Description ${DESCRIPTION}
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("数据返回结果")
public class ResultUtil<T> {
public static JsonResult success(){
return new JsonResult(ResultEnum.SUCCESS);
}
public static JsonResult success(String msg){
return new JsonResult(ResultEnum.SUCCESS.getStatus(),msg);
}
public static <T> JsonResult<T> success(T result){
return new JsonResult<T>(ResultEnum.SUCCESS, result);
}
public static JsonResult error(){
return new JsonResult(ResultEnum.ERROR);
}
public static JsonResult error(String msg){
return new JsonResult(ResultEnum.ERROR.getStatus(),msg);
}
public static <T> JsonResult error(T result){
return new JsonResult<T>(ResultEnum.ERROR, result);
}
}
4、controller统一处理返回值
/**
* @author code
* @version 1.0
* @Date 2021/8/9 15:30
* @Description ${统一返回值}
*/
@RestControllerAdvice
public class ControllerHandleAdvice implements ResponseBodyAdvice<Object> {
private final static Logger logger = LoggerFactory.getLogger(ControllerHandleAdvice.class);
@Override
public boolean supports(MethodParameter methodParameter, Class<?extends HttpMessageConverter<?>> converterType){
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class<?extends HttpMessageConverter<?>> converterType, ServerHttpRequest request, ServerHttpResponse response){
if(body instanceof String){
String msg = (String) body;
return ResultUtil.success(msg);
} else if(null == body) {
}
return body;
}
}
5、controller统一异常处理
/**
* @author code
* @version 1.0
* @Date 2021/8/9 10:56
* @Description ${统一异常返回值}
*/
@RestControllerAdvice
public class ControllerExceptionHandleAdvice {
private final static Logger logger = LoggerFactory.getLogger(ControllerExceptionHandleAdvice.class);
@ExceptionHandler
public JsonResult handler(HttpServletRequest request, HttpServletResponse response,Exception e){
logger.info("restful请求异常");
JsonResult jsonResult = new JsonResult();
if(e instanceof NullPointerException){
logger.error("空指针异常");
jsonResult.setStatus("error");
jsonResult.setResult("空指针异常");
}else if(e instanceof IllegalArgumentException){
logger.error("请求参数类型不匹配");
jsonResult.setStatus("error");
jsonResult.setResult("请求参数类型不匹配");
}else if(e instanceof SQLException){
logger.error("数据库访问异常");
jsonResult.setStatus("error");
jsonResult.setResult("数据库访问异常");
}else {
logger.error("访问异常"+e.getMessage());
jsonResult.setStatus("error");
jsonResult.setResult("服务访问异常"+e.getMessage());
}
return jsonResult;
}
}