回覆列表
  • 1 # 網路圈

    對於從事開發的朋友來說,RESTful並不陌生,我們在開發中會經常接觸RESTful風格的API。在我們呼叫API時,有些敏感操作的API是需要鑑權的(判斷API呼叫方是否有許可權請求此API),所以我們在呼叫這些敏感API前會先進行鑑權,問題來了,是不是我們每呼叫一次API就要去鑑權中心進行使用者認證操作呢?當然不是,一旦認證成功後,後續的請求是不需要重新發起認證的,看上去這和傳統的WEB表單登入是一樣的,可能不少開發者覺得這種會話狀態的保持是依靠Cookie+Session來實現的,這種認知是錯誤的,為什麼這樣講呢?聽且我來分析。

    RESTful是什麼?

    RESTful它只是一種設計風格,嚴格意義上說它並不是一套規範(10個人可以寫出9種不同的RESTful API出來),更不能把它錯認為是一種協議。

    RESTful主要是用於WEB資料介面的設計,它是基於HTTP(S)協議的,呼叫方以“HTTP動詞+賓語”這種風格來進行資源的請求,伺服器端返回的資料約定為JSON物件。 常見的HTTP動詞是:GET(讀)、POST(建立)、PUT(更新)、PATCH(部分更新)、DELETE(刪除)。

    RESTful API是無狀態的!

    我們一直強調HTTP協議本身是無狀態的協議,所以才有了Cookie+Session機制來實現會話保持。由於RESTful是WEB API的一種設計風格,它是不推薦我們使用Session來保持會話的。如果我們還以傳統WEB思想來寫WEB API,那整個業務流程就會變得異常複雜,因為會涉及到這些問題:

    Cookie如何儲存與傳遞?

    API如果是分散式佈署的,如何維護會話?如何保證會話一致性?

    RESTful透過 Token 變相實現“會話”

    對於RESTful API,我們要拋棄“會話”的概念,所有的鑑權操作全部透過客戶端傳遞過來的 Token 來進行判斷,這樣做的好處就是:

    提升效能

    降低耦合度

    易於水平擴充套件

    更易於前後端的分離

  • 中秋節和大豐收的關聯?
  • 第四個字是雨的成語有哪些?