一、前言
花了幾天的時間把尚硅谷的視頻項目看完了,跟着作了一遍,基本上沒啥大的問題,有幾個小問題也作了總結。前端
技術方面除了 vue/nacos 沒用過,其餘的基本都用過,咱們公司實際開發中用的也就是這一套東西。vue
中間的不想看,能夠直接點擊目錄,看總結,總結裏有你針對此項目全部的總結及問題解決的說明git
1.1 技術棧
springcloudspring
統一配置中心:apollo 視頻裏用的 nacos後端
統一註冊中心:eureka 視頻裏用的 nacoside
遠程調用:feignthis
文件上傳:OSS(oss 中有文件過時的設置,咱們項目就由於這個出了問題。加了過時時間戳,而後到時間過時了,淡疼)編碼
vue,前端搞,咱們只搞後端。spa
1.2 統一異常處理
1)、異常根據業務分類,而後不一樣的業務異常編碼作到統一的規範.對後期也是很好的,方便維護、管理。code
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" : {
}//返回的數據
}
二、總結
針對此項目也作了一些總結,過程當中也遇到了一些小問題,不過都還好,能很快的定位。若是有想看的同窗能夠參考以下連接: