1. 程式人生 > >十次方專案第一天(RESTful-統一異常處理-跨域處理)

十次方專案第一天(RESTful-統一異常處理-跨域處理)

GET

  • 安全且冪等
  • 獲取表示
  • 變更時獲取表示(快取)
  • 200(OK) - 表示已在響應中發出
  • 204(無內容) - 資源有空表示
  • 301(Moved Permanently) - 資源的URI已被更新
  • 303(See Other) - 其他(如,負載均衡)
  • 304(not modified)- 資源未更改(快取)
  • 400 (bad request)- 指代壞請求(如,引數錯誤)
  • 404 (not found)- 資源不存在
  • 406 (not acceptable)- 服務端不支援所需表示
  • 500 (internal server error)- 通用錯誤響應
  • 503 (Service Unavailable)- 服務端當前無法處理請求

POST

  • 不安全且不冪等
  • 使用服務端管理的(自動產生)的例項號建立資源
  • 建立子資源
  • 部分更新資源
  • 如果沒有被修改,則不過更新資源(樂觀鎖)
  • 200(OK)- 如果現有資源已被更改
  • 201(created)- 如果新資源被建立
  • 202(accepted)- 已接受處理請求但尚未完成(非同步處理)
  • 301(Moved Permanently)- 資源的URI被更新
  • 303(See Other)- 其他(如,負載均衡)
  • 400(bad request)- 指代壞請求
  • 404 (not found)- 資源不存在
  • 406 (not acceptable)- 服務端不支援所需表示
  • 409 (conflict)- 通用衝突
  • 412 (Precondition Failed)- 前置條件失敗(如執行條件更新時的衝突)
  • 415 (unsupported media type)- 接受到的表示不受支援
  • 500 (internal server error)- 通用錯誤響應
  • 503 (Service Unavailable)- 服務當前無法處理請求

PUT

  • 不安全但冪等
  • 用客戶端管理的例項號建立一個資源
  • 通過替換的方式更新資源
  • 如果未被修改,則更新資源(樂觀鎖)
  • 200 (OK)- 如果已存在資源被更改
  • 201 (created)- 如果新資源被建立
  • 301(Moved Permanently)- 資源的URI已更改
  • 303 (See Other)- 其他(如,負載均衡)
  • 400 (bad request)- 指代壞請求
  • 404 (not found)- 資源不存在
  • 406 (not acceptable)- 服務端不支援所需表示
  • 409 (conflict)- 通用衝突
  • 412 (Precondition Failed)- 前置條件失敗(如執行條件更新時的衝突)
  • 415 (unsupported media type)- 接受到的表示不受支援
  • 500 (internal server error)- 通用錯誤響應
  • 503 (Service Unavailable)- 服務當前無法處理請求

DELETE

  • 不安全但冪等
  • 刪除資源
  • 200 (OK)- 資源已被刪除
  • 301 (Moved Permanently)- 資源的URI已更改
  • 303 (See Other)- 其他,如負載均衡
  • 400 (bad request)- 指代壞請求
  • 404 (not found)- 資源不存在
  • 409 (conflict)- 通用衝突
  • 500 (internal server error)- 通用錯誤響應
  • 503 (Service Unavailable)- 服務端當前無法處理請求

公共異常處理

 為了使我們的程式碼更容易維護,我們建立一個類集中處理異常
在com.tensquare.user.controller包下建立公共異常處理類BaseExceptionHandler
 前後端分離,一旦出現錯誤返回給前端的是這樣的,所以 必須編寫統一異常處理進行攔截,然後返回前端需要的json格式

 

  17041564.png
/**
 * 統一異常處理類
 */
@ControllerAdvice
public class BaseExceptionHandler { @ExceptionHandler(value = Exception.class)//表示只處理這種異常,還可新增runtimeexception等 @ResponseBody public Result error( Exception e) { e.printStackTrace(); return new Result(false, StatusCode.ERROR, e.getMessage()); } } 

跨域處理

 跨域是什麼?瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、埠、協議任一不同,都是跨域 。我們是採用前後端分離開發的,也是前後端分離部署的,必然會存在跨域問題。 怎麼解決跨域?很簡單,只需要在controller類上添加註解@CrossOrigin 即可!這個註解其實是CORS的實現。
 ​ CORS(Cross-Origin Resource Sharing, 跨源資源共享)是W3C出的一個標準,其思想是使用自定義的HTTP頭部讓瀏覽器與伺服器進行溝通,從而決定請求或響應是應該成功,還是應該失敗。因此,要想實現CORS進行跨域,需要伺服器進行一些設定,同時前端也需要做一些配置和分析。本文簡單的對服務端的配置和前端的一些設定進行分析。
站在巨人的肩膀上