麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Spring REST 異常處理

2019-11-15 00:38:11
字體:
來源:轉載
供稿:網友
SPRing REST 異常處理

在上一篇中寫到了Spring MVC的異常處理,SpringMVC捕獲到異常之后會轉到相應的錯誤頁面,但是我們REST API ,一般只返回結果和狀態碼,比如發生異常,只向客戶端返回一個500的狀態碼,和一個錯誤消息。如果我們不做處理,客戶端通過REST API訪問,發生異常的話,會得到一個錯誤頁面的html代碼。。。這時候怎么做呢, 我現在所知道的就兩種做法

通過ResponseEntity

通過ResponseEntity接收兩個參數,一個是對象,一個是HttpStatus.舉例:

@RequestMapping(value="/customer/{id}" )public ResponseEntity<Customer> getCustomerById(@PathVariable String id){Customer customer;try {customer = customerService.getCustomerDetail(id);} catch (CustomerNotFoundException e) {return new ResponseEntity<Customer>(HttpStatus.NOT_FOUND);}return new ResponseEntity<Customer>(customer,HttpStatus.OK);}

這種方法的話我們得在每個RequestMapping 方法中加入try catch語句塊,比較麻煩,下面介紹個更簡單點的方法

通過ExceptionHandler注解

這里跟前面不同的是,我們注解方法的返回值不是一個ResponseEntity對象,而不是跳轉的頁面。

@RequestMapping(value="/customer/{id}" )@ResponseBodypublic Customer getCustomerById(@PathVariable String id) throws CustomerNotFoundException{return customerService.getCustomerDetail(id);}
@ExceptionHandler(CustomerNotFoundException.class)public ResponseEntity<ClientErrorInformation> rulesForCustomerNotFound(HttpServletRequest req, Exception e) {ClientErrorInformation error = new ClientErrorInformation(e.toString(), req.getRequestURI());return new ResponseEntity<ClientErrorInformation>(error, HttpStatus.NOT_FOUND);}

總結:這里兩種方法,推薦使用第二種,我們既可以在單個Controller中定義,也可以在標有ControllerAdvice注解的類中定義從而使異常處理對整個程序有效。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av在线影片 | 美国av免费看 | 欧美在线观看视频一区 | 黄视频网址| 97久色| 天天草天天爱 | 亚洲一区二区三区精品在线观看 | 超级av在线 | 男人的天堂视频网站 | 国产69精品久久久久久 | 精精国产xxxx视频在线野外 | 天天草天天干天天射 | 国产精品剧情一区二区三区 | 色网在线视频 | av在线收看| 亚洲日本韩国精品 | 国产成人精品无人区一区 | 亚洲一区二区三区91 | 中国的免费的视频 | 91一区二区在线观看 | 国产精品久久久久久久hd | 美女扒开腿让男生桶爽网站 | 欧美片a | 国产正在播放 | 国产一级aaa全黄毛片 | 2019天天干夜夜操 | 日本在线观看一区二区 | 少妇av片| 国产成人精品一区二区视频免费 | 欧美一级不卡视频 | 国产69精品久久久久9999不卡免费 | 久久777国产线看观看精品 | 久久久久久久久久久影视 | 精品国产91久久久久久浪潮蜜月 | 欧美一级淫片007 | 毛片网站视频 | 午夜网站视频 | 午夜影视一区二区 | 操操插插 | 看免费黄色大片 | 逼特逼视频在线观看 |