『政善治』Postman工具 — 3、補充:restful風格介面的專案說明

繁華似錦Fighting發表於2021-05-06

(一)RESTful架構風格特點

1、統一介面風格

http://伺服器地址:埠號[/專案名稱/版本/資源]

  • http://:為我們HTTP協議的訪問頭標準。
  • 伺服器地址:為我們專案伺服器IP地址。
  • 埠號:為我們伺服器內專案訪問的指定編號。
  • [/專案名稱/版本] :可選 。
  • 資源:網際網路-圖片、音樂、視訊、文字、資料。

2、規範的HTTP請求方法

  • GET:從伺服器取出資源(一項或多項)。
  • POST:在伺服器新建一個資源。(單條或多條)
  • PUT:在伺服器更新資源。
  • DELETE:從伺服器刪除資源。

3、HTTP響應碼

序號 狀態碼 動詞 說明
1 200 GET 伺服器成功返回使用者請求的資料
2 201 POST 使用者新增資料成功
3 201 PUT 使用者修改資料成功
4 204 DELETE 使用者刪除資料
5 400 POST/PUT 使用者發出的請求有錯誤,伺服器沒有進行新建或修改資料的操作
6 404 GET 伺服器沒有返回資源.

4、什麼是無狀態

為什麼說HTTP協議是無狀態的協議呢?

因為它的每個請求都是完全獨立的,每個請求包含了處理這個請求所需的完整的資料,傳送請求不涉及到狀態變更。

而且再次請求也無法判斷他是否之前請求過,如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。

看看下面故事你會有所啟發。

  • 無狀態(Stateless)
    魔都的老王開了一個會所,一個開會的地方,有大會議室、小會議室、Cosplay情景會議室。
    顧客聽說這個會所有特色,於是紛紛前來消費,小明就是其中的一員。
    小明上次會議室體驗很棒,儘管有點貴,本週又前來消費。
    結賬時,小明以為老王認識自己,和老王套近乎弄個優惠價:"王老闆,我上週剛來過,打個折扣唄"!
    老王很茫然地瞅著小明:"上週你來過?我好像一點印象也沒有了嘛,很抱歉,無法優惠"!
    小明很不爽地付完錢走人...
  • 有狀態(Stateful)
    老王有一個助手叫小王,看到這一幕於是和老闆有一番對話:
    小王:老闆,下次客人來消費,我們們給客人發一張小卡片,來一次打卡一次,凡是打過卡的,都有優惠。來的
    次數越多,折扣力度越大,這樣就能有更多的回頭客,您看如何?
    老王連說這是好主意,以後就這麼幹!
    小明第一次來領了一張考勤卡,打了卡,夾在錢包裡。
    第二次來消費埋單時,小明從自己的錢包掏出考勤卡,老王一看原來是回頭客,好說好說,88折優惠,小明和老王都笑的合不攏嘴...
  • Cookie
    後來老王覺得考勤卡上,還應該多記錄一些內容,才能更好地服務客戶,考勤卡上慢慢增加了更多內容。
    會員卡片樣例如下:
    image
    小明再次來消費時,不僅可以優惠,還可以根據小明的消費習慣,做出最合理的安排。
    隨著服務的精細化,小卡片上描述客戶的資訊越來越多,卡片越做越大,由於小卡片受4K位元組的限制,每次客戶前來消費都要攜帶大大的卡片,這很誇張!
  • Session
    小王尋思著,小卡片一直都是客戶攜帶,為何不在公司的電腦上弄個資料庫,記錄客戶的消費習慣,每個客戶有一個資料庫明細。
    客戶明細如下:
    image
    給小明的小卡片上只要有一個客戶代號"08029snne3e0kekllojeis007"就可以了,查詢電腦就可以知道是小明消費資訊和消費習慣,消費完還可以從賬戶餘額內扣除。
    這個客戶代號就是SessionlD,通常儲存在客戶端瀏覽器的Cookie裡。

總結:

上文故事中的"Stateless"、"Stateful"、"Cookie"、"SessionID"以及"Session"與HTTP協議中這些關鍵詞具有相類似的意思。

HTTP最初的設計是無狀態的(stateless),但是無狀態的HTTP無法滿足網際網路日益發展的需求,於是業界擴充套件了HTTP協議,增加了有狀態(stateful)協議頭,使之變成一個有狀態協議。

這個有狀態的協議頭,就是依靠Cookie來實現的,Cookie是維繫客戶端與伺服器之間狀態同步的紐帶。

無論什麼型別的Cookie,都是由伺服器來一手建立,最終解釋權歸伺服器,只有伺服器才理解這些Cookie所代表的真正涵義;客戶只負責攜帶,不需要理解Cookie的真正意義!

(二)JSON資料格式說明

restful風格介面的資料返回格式一般為:JSON資料格式。

1、什麼是JSON

JSON 指的是 JavaScript 物件表示法(Java Script Object Notation)。

JSON 是輕量級的文字資料交換格式。

JSON 具有自我描述性,更易理解。

2、JSON格式的特點

JSON 是純文字,具有"自我描述性"和“層級結構性”。

讀寫的速度更快,消耗流量少。

3、JSON語法

  • 格式1
    JSON物件: {"鍵1":"值1","鍵2":"值2"}
  • 格式2
    JSON陣列: [值1,值2,值3.....]
  • 格式3
    物件+陣列:{"name":"葫蘆娃","age":"8","技能":[" "," "," "]}
  • 格式4
    陣列+物件:[{"name":"葫蘆娃","age":"8"},{"name":"葫蘆娃","age":"8"}]

參考:https://www.zhihu.com/question/23202402,解釋的很精彩。

相關文章