springboot controller统一的接口返回值和异常处理

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;
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值