1. 程式人生 > >理解RESTful架構和通用異常處理

理解RESTful架構和通用異常處理

 

請求規範:

url 應該只代表資源的位置,所以不應該含有具體操作,他的具體表現形式,應該在HTTP協議請求頭用Accept和Content-type指定

因為Http是無狀態的,所有的狀態都儲存在服務端,所以使用者想要操作伺服器端的狀態,要通過HTTP協議中四個動詞

 

 響應規範:

嚴格按照狀態碼

 

另外一點:瀏覽器路徑預設是get方式,當服務端不對應的方式接收時會報405。

關於HTTP請求行、請求頭、請求體詳解連結https://blog.csdn.net/u010256388/article/details/68491509

 springMVC中ResponseBody作用就是將物件序列化放到響應體裡,預設是JSON串,取決於訊息轉換器

springMVC提供一個包含請求頭請求行和請求體的實體類ResponseEntity<T>

所以:一個標準Restful請求響應

如果不指定響應碼。預設返回200

異常處理:一般把狀態碼和友好提示返回前端

但是上圖中返回前端為空,因為body裡為null,而且只能指定型別為ResponseEntity裡的泛型Item,不能為String或其他型別

 

這樣拋異常有提示,但是狀態碼寫死了永遠都是500

所以要用通用異常處理:思想就是aop攔截Controller所有異常,返回相應的異常資訊

springMVC中提供了一個註解@ControllerAdivice可以攔截Controllar中的內容

這樣就可以攔截不同的異常資訊 返回相應的狀態碼和響應體

但是這樣對於返回結果不夠豐富,可以讓返回結果是從物件裡提取的異常資訊

 但是異常資訊終究是從異常裡提取的,所以自定義異常

異常資訊固定且複雜,定義為列舉

 自定義異常

 

Controller拋自定義異常

建立一個結果集類

 

最後的切面 從結果集取資料