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、總結
針對此項目也做了一些總結,過程中也遇到了一些小問題,不過都還好,能很快的定位。如果有想看的同學可以參考如下鏈接: