如何理解RESTful API
阿新 • • 發佈:2018-12-23
REST的英文全稱
Representation State Transfer : 直譯為表現層狀態轉移.
是通過HTTP協議來描述Web API的約定風格.
什麼是服務?
任何業務服務都可以抽象為物件的狀態維護,基本操作就増刪查改四種.
例如:
- 訪問文章的,很明顯就是對文章及其列表的增刪查改,文章是被做操的物件,通過增刪查改修改文章的狀態.
- 銀行轉賬,好像是有邏輯行為,但實際上每個轉賬事務,可以理解為對一個賬單物件的狀態操作,這個賬單又關聯了多個賬戶的狀態.
- 現實生活中一個人走路,是一個明顯的物件行為,也可以表示為人這個物件從位置A經過時間T後變為位置B的狀態更新操作.
服務端無論使用何種架構,加入快取,佇列,資料庫,最終的目標就是維護資源的狀態.
從客戶端的視角來看,服務端API描述的內容就是其維護的物件的瞬時狀態的表現.
為什麼是RESTful
服務端面向Web的API需要通過HTTP協議來表達.瞭解一下REST的起源可以知道其作者是HTTP協議的制定者,所以HTTP協議的語義元素天然符合REST的約束要求.
但RESTful並不是強制的,Web API不必遵循RESTful,但是遵循RESTful可以令API表達的語義更簡單清晰統一,在語義全部抽象為轉檯轉移後,分散式系統的架構關注點(維護狀態一致)也會更明確.
RESTful的初級內容
- 使用METHOD (POST,DELETE,GET,PUT) 等動詞表示増刪查改四種操作.
- 使用URI(通常是其子集URL)來表示物件或資源.
- 使用queryString表示查詢輸入
- 使用body表示更新和儲存的狀態輸入
- 使用HEAD進行擴充套件
例如:
- 查詢名為REST的文章 ->
GET http://host:port/article/REST
- 從賬戶A轉賬50元到轉戶B ->
POST http://host:port/transaction
body:{"from":"A","to":"B","amount":50}
- 讓一個名為Mike的人步行一分鐘 ->
PUT http://host:port/human/mike
{"time":1,"unit":"minite"}
補充閱讀
阮一峰寫的這篇文章詳盡易懂,請讀者一定要閱讀,本文不想重複其內容所 以僅僅作為理解嚮導存在.