1、前言
花了几天的时间把尚硅谷的视频项目看完了,跟着做了一遍,基本上没啥大的问题,有几个小问题也做了总结。
技术方面除了 vue/nacos 没用过,其他的基本都用过,我们公司实际开发中用的也就是这一套东西。
中间的不想看,可以直接点击目录,看总结,总结里有你针对此项目所有的总结及问题解决的说明
1.1 技术栈
springcloud
统一配置中心:apollo 视频里用的 nacos
统一注册中心:eureka 视频里用的 nacos
远程调用:feign
文件上传:OSS(oss 中有文件过期的设置,我们项目就因为这个出了问题。加了过期时间戳,然后到时间过期了,淡疼)
vue,前端搞,我们只搞后端。
1.2 统一异常处理
1)、异常根据业务分类,然后不同的业务异常编码做到统一的规范.对后期也是很好的,方便维护、管理。
2)、enum 维护,2 个字段 code msg,可以和 R 对象一起使用,异常时返回给前端显示
3)、throw 异常,
xxxException 自己实现的统一异常,构造参数传上 xxxErrorCode(接口),然后所有的错误 Enum 实现这个接口,执行下面的代码就可以了。
throw new XXXException(XXXEnum.NOT_USER_ERROR);
然后抛出异常后,这个类(@RestControllerAdvice)就会去统一处理,返回给前台相应的信息.
我们的大概用法如下,只是一个大概思路。
/**
* @author : bamboo
* @date : 2020-04-11
*/
public interface MallErrorCode {
/**
* 获取错误码
*
* @return 错误码
*/
String geCode();
/**
* 获取错误消息
*
* @return 错误消息
*/
String getMsg();
}
/**
* @author : bamboo
* @date : 2020-04-11
*/
public enum UserErrorEnum implements MallErrorCode {
/**
*
*/
USER_NOT_FOUND("20001", "没有找到此用户"),
USER_DELETED("200002", "用户已被删除");
private final String code;
private final String msg;
UserErrorEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public String geCode() {
return this.code;
}
@Override
public String getMsg() {
return this.msg;
}
}
/**
* @author : bamboo
* @date : 2020-04-11
*/
public class MallException extends RuntimeException {
private String code = "500";
private String msg;
public MallException(String code, String msg) {
super(msg);
this.code = code;
}
public MallException(MallErrorCode mallErrorCode) {
this(mallErrorCode.geCode(), mallErrorCode.getMsg());
}
public static void createFailResult(MallErrorCode mallErrorCode) {
throw new MallException(mallErrorCode);
}
public static void createFailResult(String code, String msg) {
throw new MallException(code, msg);
}
public static void main(String[] args) {
throw new MallException(UserErrorEnum.USER_DELETED);
}
}
1.3 返回信息统一封装
R 对象.这里是继承了 HashMap 对象
我们是直接用了 Bean 对象,封装了如下的信息.
{
"success" : true/false,// 标识接口成功与否
"code" : 100,//响应编码
"msg" : "",//响应消息,错误的时候会用到
"data" : {
}//返回的数据
}
2、总结
针对此项目也做了一些总结,过程中也遇到了一些小问题,不过都还好,能很快的定位。如果有想看的同学可以参考如下链接:
https://gitee.com/yeyinzhu/gulimall-learn/tree/master
来源:oschina
链接:https://my.oschina.net/u/4342102/blog/4291518