對RESTFUL理解
目前都在提倡RESTful風格的API,RESTful架構,那到底什麼是RESTful?什麼是RESTful風格。在這寫出自己對REST的理解。
REST最早出自一個計算機大牛(主導設計了HTTP協議1.1和1.0版,目前HTTP都有HTTP2了),指的是表述性狀態轉移。
表述性狀態轉移是一種設計的思想或者說規範。通過規範約束介面的定義,規範介面的形式,利於呼叫者對介面的呼叫,以及服務提供者對介面的維護。從而影響介面的設計。設計URL就是在分清楚系統中有哪些資源,對資源的良好劃分影響系統介面的設計,同時會正向影響URL更規範。
我們訪問一個服務,通過呼叫服務的介面來實現。比如我們想訪問百度,需要通過URL(
在RESTful之前,我們使用URI去定位,或者訪問某一資源服務,URI的定義也就是介面地址一般情況下是專案約定的,表示行為的,例如一個查詢天氣服務的介面地址,若我們查詢北京的天氣,
我們會寫成 : xxxx/getWeather.do?city=beijing。
我們服務的理解是行為動作(獲取天氣),?後面的city=beijing是查詢條件,.do 表示訪問的是服務。
RESTful風格理解的我們訪問的是資源,我們在獲取資源那麼就使用HTTP中請求的型別對介面進行表述。我們會把API寫成:
GET(請求型別)
xxxx/weather/beijing
充分利用傳輸協議(這裡是HTTP協議,也可以是其他協議),約定了請求型別GET。在HTTP協議中GET用來獲取資源,DELETE用來刪除資源,POST用來修改資源(非冪等),PUT用來更新資源(冪等的)。通過協議中的請求方式就很明確這個介面API是執行的(增刪改查中的)什麼操作。查詢條件對應資源來說就是對資源的過濾。
狀態轉換,客戶端就是應用,伺服器資料庫就是資源 。客戶端的應用傳送實際請求,這時候應用狀態改變,伺服器接收到這個請求,伺服器中資源狀態改變。我們認為資源是有狀態的,比如天氣的 氣溫,我們更新天氣從 10℃ 到 -10℃ 是天氣這個資源的狀態的轉換,通過RESTfulAPI設計為:
POST
xxxx/weater/beijing
{from:10,to:-10, stat:temperature}