设计表现层返回数据模型类,用于前后端数据联调,也叫前后数据协议
public class R {
private Boolean flag;
private Object data;
}
- 当后端程序抛出异常时
这时这个数据格式又变了,让前端处理就太过分了。所以后端要保证即使代码出现异常,也要保证数据格式仍然是前端的状态。通过使用springmvc提供的异常处理器。
其中 @ExceptionHandler()中可以写具体的 异常类型.class 来拦截对应的异常。
//作为springmvc的异常处理器
//@ControllerAdvice
@RestControllerAdvice//@ControllerAdvice @ResponseBody的组合
public class ProjectExceptionAdvice {
//拦截所有异常信息
@ExceptionHandler
public R doException(Exception ex){
ex.printStackTrace();
return new R(false,"服务器故障,请联系管理员!");
}
}
修改消息模型
@Data
public class R {
private Boolean flag;
private Object data;
private String msg;
public R(){}
public R(boolean flag) {
this.flag=flag;
}
public R(boolean flag, Object data) {
this.flag=flag;
this.data=data;
}
public R(boolean flag,String msg){
this.flag = flag;
this.msg = msg;
}
}
修改前端消息显示
//添加
handleAdd () {
axios.post("/books",this.formData).then((res)=>{
//判断当前操作是否成功
if(res.data.flag){
//1.关闭弹层
this.dialogFormVisible = false;
// this.$message.success("添加成功");
this.$message.success(res.data.msg);
}else{
// this.$message.success("添加失败");
this.$message.error(res.data.msg);
}
}).finally(()=>{
//2.重新加载数据
this.getAll();
});
},