精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你會全局統一格式返回嗎?

開發 前端
相信全局統一格式返回這個東西在每個項目中都非常重要的,前端需要一個統一的格式給前端,所以我們后端需要封裝好結構給前端。

[[428153]]

本文轉載自微信公眾號「java后端指南」,作者KING鵬哥  。轉載本文請聯系java后端指南公眾號。

相信全局統一格式返回這個東西在每個項目中都非常重要的,前端需要一個統一的格式給前端,所以我們后端需要封裝好結構給前端。

1結構

我目前接觸的結構基本上是這樣的。

  1. "code":"0"
  2. "msg":"請求正常"
  3. "data":{} 

2實現

創建一個統一返回前端的實體類

  1. public class R extends HashMap<String, Object> { 
  2.     private static final long serialVersionUID = 1L; 
  3.  
  4.     /** 
  5.      * 狀態碼 
  6.      */ 
  7.     public static final String CODE_TAG = "code"
  8.  
  9.     /** 
  10.      * 返回內容 
  11.      */ 
  12.     public static final String MSG_TAG = "msg"
  13.  
  14.     /** 
  15.      * 數據對象 
  16.      */ 
  17.     public static final String DATA_TAG = "data"
  18.  
  19.     /** 
  20.      * 初始化一個新創建的 AjaxResult 對象,使其表示一個空消息。 
  21.      */ 
  22.     public R() { 
  23.     } 
  24.  
  25.     /** 
  26.      * 初始化一個新創建的 AjaxResult 對象 
  27.      * 
  28.      * @param code 狀態碼 
  29.      * @param msg  返回內容 
  30.      */ 
  31.     public R(String code, String msg) { 
  32.         super.put(CODE_TAG, code); 
  33.         super.put(MSG_TAG, msg); 
  34.     } 
  35.  
  36.     /** 
  37.      * 初始化一個新創建的 AjaxResult 對象 
  38.      * 
  39.      * @param code 狀態碼 
  40.      * @param msg  返回內容 
  41.      * @param data 數據對象 
  42.      */ 
  43.     public R(String code, String msg, Object data) { 
  44.         super.put(CODE_TAG, code); 
  45.         super.put(MSG_TAG, msg); 
  46.         if (null!=data) { 
  47.             super.put(DATA_TAG, data); 
  48.         } 
  49.     } 
  50.  
  51.     /** 
  52.      * 方便鏈式調用 
  53.      * 
  54.      * @param key 
  55.      * @param value 
  56.      * @return 
  57.      */ 
  58.     @Override 
  59.     public R put(String key, Object value) { 
  60.         super.put(key, value); 
  61.         return this; 
  62.     } 
  63.  
  64.     /** 
  65.      * 返回成功消息 
  66.      * 
  67.      * @return 成功消息 
  68.      */ 
  69.     public static R success() { 
  70.         return R.success("操作成功"); 
  71.     } 
  72.  
  73.     /** 
  74.      * 返回成功數據 
  75.      * 
  76.      * @return 成功消息 
  77.      */ 
  78.     public static R success(Object data) { 
  79.         return R.success("操作成功", data); 
  80.     } 
  81.  
  82.     /** 
  83.      * 返回成功消息 
  84.      * 
  85.      * @param msg 返回內容 
  86.      * @return 成功消息 
  87.      */ 
  88.     public static R success(String msg) { 
  89.         return R.success(msg, null); 
  90.     } 
  91.  
  92.     /** 
  93.      * 返回成功消息 
  94.      * 
  95.      * @param msg  返回內容 
  96.      * @param data 數據對象 
  97.      * @return 成功消息 
  98.      */ 
  99.     public static R success(String msg, Object data) { 
  100.         return new R("0", msg, data); 
  101.     } 
  102.  
  103.     /** 
  104.      * 返回錯誤消息 
  105.      * 
  106.      * @return 
  107.      */ 
  108.     public static R error() { 
  109.         return R.error("操作失敗"); 
  110.     } 
  111.  
  112.     /** 
  113.      * 返回錯誤消息 
  114.      * 
  115.      * @param msg 返回內容 
  116.      * @return 警告消息 
  117.      */ 
  118.     public static R error(String msg) { 
  119.         return R.error("-1", msg); 
  120.     } 
  121.  
  122.     /** 
  123.      * 返回錯誤消息 
  124.      * 
  125.      * @param msg  返回內容 
  126.      * @param data 數據對象 
  127.      * @return 警告消息 
  128.      */ 
  129.     public static R error(String msg, Object data) { 
  130.         return new R("-1", msg, data); 
  131.     } 
  132.  
  133.     /** 
  134.      * 返回錯誤消息 
  135.      * 
  136.      * @param code 狀態碼 
  137.      * @param msg  返回內容 
  138.      * @return 警告消息 
  139.      */ 
  140.     public static R error(String code, String msg) { 
  141.         return new R(code, msg, null); 
  142.     } 

3異常處理

正常情況下的返回結構已經弄好了,異常情況下我們也要做處理的。

首先新建幾個異常類,根據實際需要創建。

  1. /** 
  2.  * 基本異常 
  3.  */ 
  4. @Getter 
  5. public class BaseException extends RuntimeException { 
  6.     private static final long serialVersionUID = 1L; 
  7.  
  8.     /** 
  9.      * 所屬模塊 
  10.      */ 
  11.     private final String module; 
  12.     /** 
  13.      * 錯誤碼 
  14.      */ 
  15.     private final String code; 
  16.     /** 
  17.      * 錯誤碼對應的參數 
  18.      */ 
  19.     private final Object[] args; 
  20.     /** 
  21.      * 錯誤消息 
  22.      */ 
  23.     private final String message; 
  24.  
  25.     public BaseException(String module, String code, Object[] args, String message) { 
  26.         this.module = module; 
  27.         this.code = code; 
  28.         this.args = args; 
  29.         this.message = message; 
  30.     } 
  31.  
  32.     public BaseException(String module, String code, Object[] args) { 
  33.         this(module, code, args, null); 
  34.     } 
  35.  
  36.     public BaseException(String module, String defaultMessage) { 
  37.         this(module, nullnull, defaultMessage); 
  38.     } 
  39.  
  40.     public BaseException(String code, Object[] args) { 
  41.         this(null, code, args, null); 
  42.     } 
  43.     public BaseException(String module, String code, String message) { 
  44.         this(null, code, null, message); 
  45.     } 
  46.     public BaseException(String message) { 
  47.         this(nullnullnull, message); 
  48.     } 
  49.     public String getCode() { 
  50.         return code; 
  51.     } 
  52.     public String getMsg() { return message; } 
  53.     public Object[] getArgs() { 
  54.         return args; 
  55.     } 
  56.     public String getDefaultMessage() { return getMessage(); } 
  1. /** 
  2.  * 自定義異常 
  3.  */ 
  4. public class CustomException extends RuntimeException { 
  5.     private static final long serialVersionUID = 1L; 
  6.  
  7.     private String code; 
  8.  
  9.     private final String message; 
  10.  
  11.     public CustomException(String message) { 
  12.         this.message = message; 
  13.     } 
  14.  
  15.     public CustomException(String message, String code) { 
  16.         this.message = message; 
  17.         this.code = code; 
  18.     } 
  19.  
  20.     public CustomException(String message, Throwable e) { 
  21.         super(message, e); 
  22.         this.message = message; 
  23.     } 
  24.  
  25.     @Override 
  26.     public String getMessage() { 
  27.         return message; 
  28.     } 
  29.  
  30.     public String getCode() { 
  31.         return code; 
  32.     } 

我就創建了兩個異常類。

4創建全局異常攔截器

  1. @RestControllerAdvice 
  2. @Slf4j 
  3. public class GlobalExceptionHandler { 
  4.     /** 
  5.      * 基礎異常 
  6.      */ 
  7.     @ExceptionHandler(BaseException.class) 
  8.     public R baseException(BaseException e) { 
  9.         return R.error(e.getDefaultMessage()); 
  10.     } 
  11.  
  12.     /** 
  13.      * 業務異常 
  14.      */ 
  15.     @ExceptionHandler(CustomException.class) 
  16.     public R businessException(CustomException e) { 
  17.         if (StringUtils.isNotBlank(e.getCode())) { 
  18.             return R.error(e.getMessage()); 
  19.         } 
  20.         return R.error("-1", e.getMessage()); 
  21.     } 
  22.  
  23.     @ExceptionHandler(Exception.class) 
  24.     public R handleException(Exception e) { 
  25.         log.error(e.getMessage(), e); 
  26.         return R.error(String.format("未知錯誤%s",e.getMessage())); 
  27.     } 
  28.  
  29.  

其中狀態碼我們可以單獨定義一個類,我為了方便就不寫了。

5測試

  1. @RestController 
  2. public class TestAction { 
  3.     @RequestMapping("/test"
  4.     public R test(){ 
  5.        return R.success("請求成功",null); 
  6.     } 
  7.     @RequestMapping("/test2"
  8.     public R test2(){ 
  9.         Student student=new Student(); 
  10.         student.setName("king"); 
  11.         student.setPassword("123456"); 
  12.         return R.success(student); 
  13.     } 
  14.     @RequestMapping("/test3"
  15.     public R test3(){ 
  16.         return R.error("請求失敗"); 
  17.     } 
  18.     @RequestMapping("/test4"
  19.     public R test4(){ 
  20.         throw new CustomException("失敗了"); 
  21.     } 
  22.  
  23.     @RequestMapping("/test5"
  24.     public R test5() throws Exception { 
  25.         throw new Exception("失敗了"); 
  26.     } 

大家可以自己去看看,如果有問題歡迎來騷擾我。

 

視頻講解:https://www.bilibili.com/video/BV1e341117av/

 

責任編輯:武曉燕 來源: java后端指南
相關推薦

2019-09-29 10:23:09

APIJava編程語言

2022-08-31 08:19:04

接口returnCode代碼

2010-03-03 18:28:31

RSA 2010聯想網御

2015-11-10 17:55:35

微軟

2025-04-09 08:00:00

FastAPI統一響應全局異常處理

2022-07-06 08:01:05

數據庫分布式

2021-08-19 15:36:09

數據備份存儲備份策略

2024-04-23 08:31:57

pythonfalse

2023-11-28 14:32:04

2021-08-27 14:11:49

統一安全工作區桌面虛擬化應用安全

2011-04-28 14:20:56

華碩上網本VX6

2021-04-16 15:02:11

CAP理論分布式

2021-04-14 06:53:52

C# 修飾符 Public

2024-02-22 08:31:26

數據恢復工具MySQL回滾SQL

2021-10-11 10:25:33

排列nums數組

2012-06-20 10:47:25

Team Leader

2014-04-22 10:50:31

統一通信UCBYOD

2019-05-07 15:49:27

AI人工智能藝術

2010-07-13 10:40:30

唐駿

2021-09-09 08:58:32

Excel數據處理函數
點贊
收藏

51CTO技術棧公眾號

少妇激情一区二区三区视频| 亚洲精品欧洲精品| 欧美日韩国产精品综合| 天堂va在线高清一区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲一区二区三区久久| 久久国产露脸精品国产| 国产精品美女在线观看直播| 亚洲综合精品久久| 免费h精品视频在线播放| 日本成人一级片| 91精品一区二区三区综合| 亚洲第一色中文字幕| 国产一区亚洲二区三区| 久久亚洲天堂| 粉嫩av一区二区三区在线播放| 欧美一级视频在线观看| 天天摸日日摸狠狠添| aaa国产精品视频| 日本韩国欧美一区| 国产精品自拍合集| 福利视频在线导航| 成人aa视频在线观看| 国产精品你懂得| 中文在线观看免费网站| 日韩成人三级| 日韩av网站大全| www国产黄色| 免费在线视频欧美| 91污在线观看| 国产精品yjizz| 一级特黄色大片| 久久精品道一区二区三区| 久久夜精品香蕉| 亚洲精品乱码久久久久久久| 日本超碰一区二区| 欧美日韩一卡二卡| 欧美xxxxx在线视频| 高清电影在线观看免费| 中文字幕人成不卡一区| 欧美性天天影院| 少妇高潮久久久| 国产精品资源在线看| 国产精品欧美久久久| 国产成人无码精品久久久久| 综合日韩在线| 色综合影院在线| 免费污网站在线观看| 国产ts一区| 欧美一区二区精品在线| 日本肉体xxxx裸体xxx免费| 国产资源在线观看入口av| 一区二区三区丝袜| 老司机av福利| 69av亚洲| 中文字幕av一区二区三区高| 日本成人三级| 毛片在线能看| 91偷拍与自偷拍精品| 国产精品乱子乱xxxx| 性一交一乱一色一视频麻豆| 国内成人自拍视频| 国产精品尤物福利片在线观看| 国产99免费视频| 日韩一区欧美二区| 国产精品扒开腿做爽爽爽男男| 在线能看的av| 国产精品一卡| 日韩免费精品视频| 国产第一页在线观看| 日韩国产高清在线| 国产精品视频地址| 中文字幕永久在线视频| 另类专区欧美蜜桃臀第一页| 国产精品日日做人人爱| 怡春院在线视频| 精品在线播放免费| 91久久久久久久久久久| a级片在线视频| 国产激情视频一区二区三区欧美 | 九七久久人人| 亚洲人成网站在线| 国产高清不卡无码视频| 成人福利电影| 欧美日韩国产精品一区| 欧美日韩第二页| 精品视频在线一区二区在线| 欧美日韩不卡一区| 国产在线a视频| 高清日韩中文字幕| 亚洲老板91色精品久久| 三年中国中文观看免费播放| 久久资源中文字幕| 欧美国产日韩视频| 日日摸天天添天天添破| 免费人成精品欧美精品| 91热精品视频| 欧美 日韩 国产 成人 在线 91| 99九九99九九九视频精品| 日本一区二区三区视频在线观看| 日本三级视频在线播放| 一区二区高清在线| 国产在线青青草| 亚洲午夜国产成人| 亚洲第一偷拍网| 精品成人无码一区二区三区| 亚洲欧美综合久久久| 91精品国产91久久久久久不卡| 国产剧情在线视频| 紧缚奴在线一区二区三区| 国产精品久久久久久久久久直播| 牛牛澡牛牛爽一区二区| 亚洲人成网站在线| 黄色片视频在线免费观看| 91麻豆精品| 亚洲日本aⅴ片在线观看香蕉| 一起操在线播放| 在线综合视频| 2022国产精品| 成人精品一区二区三区校园激情 | 熟女视频一区二区三区| 色是在线视频| 欧美一二三在线| x88av在线| 亚洲经典在线| 亚洲mm色国产网站| 国产一级在线| 亚洲福利一区二区| 欧美一级特黄aaa| 伊人久久大香线蕉无限次| 九九热在线精品视频| 亚洲av无码乱码国产精品fc2| 国产sm精品调教视频网站| 亚洲欧洲日韩精品| 成人影院大全| 精品国产精品一区二区夜夜嗨| 黄色国产在线播放| 欧美一级网站| 国产伦一区二区三区色一情| 成人在线播放| 精品视频在线免费看| 黄色a一级视频| 国内综合精品午夜久久资源| 91久久综合亚洲鲁鲁五月天| gogogo高清在线观看免费完整版| 精品久久久在线观看| 精品无码av一区二区三区不卡| 四季av一区二区三区免费观看| 日本最新高清不卡中文字幕| 色视频免费在线观看| 性欧美大战久久久久久久久| 久久黄色一级视频| 一区二区三区在线电影| 91精品国产综合久久男男| 国产成人天天5g影院在线观看| 欧美日韩国产精品一区二区三区四区| 一级全黄裸体片| 欧美精品不卡| www.久久久| 影院在线观看全集免费观看| 91精品国产aⅴ一区二区| 免费在线观看a级片| 麻豆中文一区二区| 永久域名在线精品| 99re8精品视频在线观看| 久久久精品2019中文字幕神马| 在线免费观看一区二区| 国产精品久久久久婷婷二区次| 一级在线免费视频| 成人3d精品动漫精品一二三| 国产精品久久久久久久久免费看| 国产女主播在线直播| 在线观看视频一区| 免费成人深夜天涯网站| 另类欧美日韩国产在线| 影音先锋在线亚洲| 91亚洲无吗| 久久久伊人日本| 香蕉久久一区二区三区| 日韩人体视频一二区| 中字幕一区二区三区乱码| 蜜桃视频在线观看一区二区| 中日韩在线视频| 久久伊人精品| 性色av一区二区三区红粉影视| 性xxxx搡xxxxx搡欧美| 日韩欧美在线一区| 大吊一区二区三区| 国产超碰在线一区| 久久精品国产精品亚洲色婷婷| 九九精品在线| 国产日韩精品综合网站| 国产探花在线观看| 亚洲免费影视第一页| 一卡二卡三卡在线观看| 亚洲日本乱码在线观看| 中文字幕影片免费在线观看| 秋霞午夜av一区二区三区| 香蕉精品视频在线| 久久人人爽人人爽人人片av不| 欧洲一区二区视频| 麻豆91在线| 亚洲精品国产电影| 11024精品一区二区三区日韩| 洋洋av久久久久久久一区| 国精产品一区一区三区免费视频| 精品一区二区国语对白| av免费观看网| 天天综合网91| 欧美性xxxx69| 成人激情自拍| 国产美女精彩久久| 色戒汤唯在线| 九九久久久久99精品| 激情小说 在线视频| 日韩免费性生活视频播放| 国产农村妇女aaaaa视频| 中文字幕一区二区三中文字幕| 精品国产av色一区二区深夜久久 | 日韩欧美中字| 国产免费一区二区三区| 日本成人一区二区| 2020国产精品视频| a级毛片免费观看在线| 亚洲天堂av女优| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美日本一道本在线视频| 在线观看亚洲天堂| 一区二区三区加勒比av| 美女av免费看| www国产亚洲精品久久麻豆| 古装做爰无遮挡三级聊斋艳谭| 日韩在线一二三区| 亚洲自偷自拍熟女另类| 欧美人与禽猛交乱配视频| 亚洲国产欧美日韩| 九九精品在线| 免费国产在线精品一区二区三区| 亚洲一区二区免费在线观看| 国产在线拍偷自揄拍精品| 快播电影网址老女人久久| 91成人国产在线观看| 9lporm自拍视频区在线| 欧美日韩xxxxx| 国产1区在线| www国产精品视频| 触手亚洲一区二区三区| 亚洲区中文字幕| 手机福利在线| 亚洲激情第一页| 人妻91麻豆一区二区三区| 91精品国产综合久久精品app| 一区二区三区亚洲视频| 欧美精选一区二区| 一级全黄裸体免费视频| 69堂亚洲精品首页| 91亚洲视频在线观看| 欧美日韩一区二区三区在线| 中文字幕在线观看国产| 欧美私人免费视频| 中文字幕视频二区| 欧美日韩不卡在线| 国产suv精品一区二区69| 欧美一区二区在线看| 国产女18毛片多18精品| 欧美一级高清大全免费观看| 国产高清免费在线观看| 亚洲第一中文字幕| 午夜福利视频一区二区| 亚洲美女av网站| 国产黄色在线| 最近2019年手机中文字幕| 精品国产99久久久久久| 美女撒尿一区二区三区| 美洲精品一卡2卡三卡4卡四卡| 久久免费视频这里只有精品| 国产在线看片免费视频在线观看| 日韩免费视频在线观看| 欧美xxxx网站| av日韩免费电影| 国产美女撒尿一区二区| 欧美日韩大片一区二区三区| jvid福利在线一区二区| 在线一区日本视频| 欧美成人亚洲| 乱人伦xxxx国语对白| 巨乳诱惑日韩免费av| 中文字幕第100页| 国产高清久久久久| 在线免费观看日韩av| 国产精品久久久久久久久晋中| 免费在线观看日韩| 欧美日韩亚洲视频一区| 曰批又黄又爽免费视频| 日韩精品一区二区三区中文不卡| 婷婷色在线视频| 深夜福利91大全| 国产探花视频在线观看| 国产精品h片在线播放| 亚洲三级在线| 久久久久久久久久久久久久一区 | 丁香激情综合国产| 日本xxxxxxxxx18| 亚洲欧美日韩精品久久久久| 成人午夜视频精品一区| 欧美日韩国产片| 蜜桃av中文字幕| 久久精品夜夜夜夜夜久久| 欧美a级在线观看| 成人福利网站在线观看11| 林ゆな中文字幕一区二区| 亚洲 国产 欧美一区| 亚洲乱亚洲高清| 黄色一级片免费的| 2021国产精品久久精品| www.毛片com| 欧美性受xxxx黑人xyx性爽| 人妻丰满熟妇av无码区hd| 精品国内自产拍在线观看| 忘忧草在线日韩www影院| 亚洲精品免费av| 国产一区日韩| 久久99中文字幕| 国产毛片精品国产一区二区三区| 午夜理伦三级做爰电影| 亚洲一区二区视频在线观看| 亚洲最新av网站| 亚洲欧美精品中文字幕在线| 亚洲色图美国十次| 国产一区玩具在线观看| 久久99国内| 成人一区二区免费视频| 国产精品一区不卡| 中文乱码字幕高清一区二区| 日韩欧中文字幕| 四虎永久在线观看| 欧美理论电影在线播放| 日本黄色成人| 天堂一区二区三区| 久久久久国产精品一区三寸| 欧美大喷水吹潮合集在线观看| ...xxx性欧美| 在线播放亚洲精品| 亚洲欧洲第一视频| 原纱央莉成人av片| 九色综合婷婷综合| 亚洲性视频h| 国产国语老龄妇女a片| 亚洲精品视频在线| 国产精品羞羞答答在线| 中文字幕日韩免费视频| 成人四虎影院| 亚洲国产欧洲综合997久久| 日韩国产精品久久久久久亚洲| 精品人伦一区二区三电影| 精品国产鲁一鲁一区二区张丽| www.黄色片| 久久91亚洲精品中文字幕奶水| 精品一区二区三区中文字幕在线| 中文字幕在线观看一区二区三区| 美女视频一区二区三区| 18啪啪污污免费网站| 在线观看日产精品| jizz日韩| 147欧美人体大胆444| 午夜久久久久| 亚洲天堂2024| 日韩欧美在线免费| 国产高清美女一级毛片久久| 国产精品草莓在线免费观看 | 精品成人久久久| 日韩成人av在线播放| 卡通欧美亚洲| 亚洲精品中文综合第一页| 精品一区在线看| 欧美成人免费看| 亚洲成色777777女色窝| 超碰一区二区| 亚洲精蜜桃久在线| 激情国产一区二区| 免费无遮挡无码永久在线观看视频| 精品国产乱码久久久久久图片| 玖玖在线播放| 色之综合天天综合色天天棕色| 国产呦萝稀缺另类资源| 久久久久亚洲av片无码下载蜜桃 | www国产视频| 91久久免费观看| 日本在线看片免费人成视1000| 成人做爽爽免费视频| 激情综合网址| 自拍偷拍视频亚洲| 欧美一区二区视频在线观看2022| av影院在线| 日韩久久精品一区二区三区| 国产精品18久久久久久久网站| 国产成人精品a视频一区| 国产亚洲a∨片在线观看| 高清一区二区三区av| 日韩欧美一区二|