尚硅谷《谷粒商城项目总结》
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、总结
针对此项目也做了一些总结,过程中也遇到了一些小问题,不过都还好,能很快的定位。如果有想看的同学可以参考如下链接: