<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      解決spring boot中rest接口404,500等錯誤返回統(tǒng)一的json格式

      在開發(fā)rest接口時,我們往往會定義統(tǒng)一的返回格式,列如:

      {
        "status": true,
        "code": 200,
        "message": null,
        "data": [
          {
            "id": "101",
            "name": "jack"
          },
          {
            "id": "102",
            "name": "jason"
          }
        ]
      }
      

      但是如果調(diào)用方請求我們的api時把接口地址寫錯了,就會得到一個404錯誤,在傳統(tǒng)的web系統(tǒng)中我們可自定義404錯誤頁面,展示更友好。

      在spring boot中其實也是返回了一個json格式的數(shù)據(jù),如下:

      {
        "timestamp": 1492063521109,
        "status": 404,
        "error": "Not Found",
        "message": "No message available",
        "path": "/rest11/auth"
      }
      

      告訴我們哪個地址是沒找到,其實也挺友好的,但是因為我們上面自定義的數(shù)據(jù)格式跟下面的不一致,當用戶拿到這個返回的時候是無法識別的,其中最明顯的是status字段。

      我們自定義的是boolean類型,表示是否成功

      這邊返回的就是http的狀態(tài)碼

      所以我們需要在發(fā)生這種系統(tǒng)錯誤時也能返回我們自定義的那種格式

      定義一個異常處理類

      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.web.bind.annotation.ControllerAdvice;
      import org.springframework.web.bind.annotation.ExceptionHandler;
      import org.springframework.web.bind.annotation.ResponseBody;
      
      @ControllerAdvice
      public class GlobalExceptionHandler {
          private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
      
          /**
           * 系統(tǒng)異常處理,比如:404,500
           * @param req
           * @param resp
           * @param e
           * @return
           * @throws Exception
           */
          @ExceptionHandler(value = Exception.class)
          @ResponseBody
          public ResponseData defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
              logger.error("", e);
              ResponseData r = new ResponseData();
              r.setMessage(e.getMessage());
              if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) {
                   r.setCode(404);
              } else {
                   r.setCode(500);
              }
              r.setData(null);
              r.setStatus(false);
              return r;
          }
      }
      

      ResponseData是我們返回格式的實體類

      這種在發(fā)生錯誤時這邊會捕獲到,然后封裝好返回格式,返回給調(diào)用方

      最后關(guān)鍵的一步是在spring boot的配置文件中加上如下配置:

      #出現(xiàn)錯誤時, 直接拋出異常
      spring.mvc.throw-exception-if-no-handler-found=true
      #不要為我們工程中的資源文件建立映射
      spring.resources.add-mappings=false
      

      然后我們調(diào)用一個不存在的接口時,返回的錯誤信息就是我們自定義的那種格式了

      {
        "status": false,
        "code": 404,
        "message": "No handler found for GET /rest11/auth",
        "data": null
      }
      posted on 2018-01-28 23:48  TopCoder.NET  閱讀(811)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 性无码一区二区三区在线观看| 成人无码www在线看免费| 日韩精品三区二区三区| 国产成人亚洲老熟女精品| 国产精品亚洲av三区色| 国产欧美日韩精品第二区| 99九九热久久只有精品| 精品无人区卡一卡二卡三乱码| 噜噜噜噜私人影院| jk白丝喷浆| 丁香五月亚洲综合在线国内自拍| 久久香蕉国产线看观看猫咪av| 蜜臀91精品高清国产福利| 无码成人午夜在线观看| 中文字幕在线精品国产| 久热这里只国产精品视频| 久久久久亚洲av成人网址| 国产永久免费高清在线| 在线看国产精品自拍内射| 精品欧美一区二区三区久久久| 国产午精品午夜福利757视频播放| 蜜臀av一区二区三区精品| 午夜在线观看成人av| 在线a级毛片无码免费真人| 无套内谢少妇毛片aaaa片免费| 欧美国产精品不卡在线观看| 伊人久久大香线蕉综合观| 少妇人妻偷人精品免费视频| 国产午夜福利av在线麻豆| 亚洲美免无码中文字幕在线| 国产中文三级全黄| 欧美人与动欧交视频| 国产欧美精品一区二区三区-老狼| 久青草国产综合视频在线| 亚洲欧美日韩愉拍自拍美利坚| 日韩有码中文字幕av| 日韩区中文字幕在线观看| 日本视频精品一区二区| 欧美亚洲h在线一区二区| 宁蒗| 国产gaysexchina男外卖 |