RESTful API 架構解讀

2022-01-11 01:52:42 字數 2456 閱讀 2657

首先我們還是先介紹下 restful api 的來龍去脈。 首先, restful (下文都簡稱 restful api 為 restful )

1、restful 這個概念最早是在 2023年 roy thomas fielding 博士在他的博士**《architectural styles and the design of network-based software architectures》 中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇**的第5章中進行了概括性的介紹。 (其實我很好奇,為何國內的開發者們沒能做出這些 標準通用級別的 規範)

這裡 我們需要理解的就是 restful 它不是一種 類似於 http/https 的規範,而是一種 web 的架構。 而 restful 架構風格主要包含了

1)採用 uri 標識資源

3)使用標準的 http 方法

4)支援多種資源表示方式

5)無狀態性

接下來,就用著五點 繼續往下介紹。

一、採用 uri 標識資源
首先 標識資源 中的 資源 指的是什麼? 

同時, 儲存在資料庫中的資料也可以理解為資源。

並且 通過 uri 標識以後,任何在客戶端能夠訪問到的資源 均有乙個或者多個標識。

然後 我們通過 uri 訪問靜態資源,訪問資料庫請求後返回的資料等等。例如:

(當前id=1的使用者資訊)

(2017新增使用者)

這樣 乙個簡單的 uri 就具備了很強的標誌性 和 可讀性。除此之外 uri 還能夠比較清晰的獲取到靜態資源路徑。

所以站在 存在即為合理的角度來思考的話,既然該 uri 存在,那麼此 uri 必須是 標識某個資源而存在。

這裡的  『鏈結』 就是我們常常說的 url, url 和上面說到的 uri有什麼區別呢?

恩,說到這裡,我們就來詳細的介紹下 uri、url、urn 三者之間的關係和區別。

uri (uniform resource identifier 統一資源識別符號)

url (uniform resource locator 統一資源定位器)

urn (uniform resource name 統一資源命名)

也就是說,uri是以一種抽象的,高層次概念定義統一資源標識,而url和urn則是具體的資源標識的方式。url和urn都是一種uri。

三、使用標準的 http 方法
這裡標準的用法, 概括起來包含了 這7種

get (從伺服器取出資源)

post (在伺服器新建乙個資源)

put (在伺服器更新資源(客戶端提供改變後的完整資源))

patch (在伺服器更新資源(客戶端提供改變的屬性))

delete (從伺服器刪除資源)

head (獲取資源的元資料)

options (獲取資訊,關於資源的哪些屬性是客戶端可以改變的)

後面二種 為不常用方法。 get 方法相信大家都很熟悉了。 這裡解釋一下 post 和 put 方法。雖然 通過傳送post和put請求均可以新增乙個新的資源,但是兩者的不同之處在於:對於前者,請求著一般不能確定標識新增資源最終採用的uri,即服務端最終為成功新增的資源指定uri;對於後者,最終標識新增資源的uri是可以由請求者控制的。也正是因為這個原因,如果傳送put請求,我們一般直接將標識新增資源的uri作為請求的uri;對於post請求來說,其uri一般是標識新增資源存放容器的uri。

簡單點說就是 post 方法 可以將要新增的 資源 放在 data 中而不一定非得放在 uri 中。 而 put 方法新增資源的時候,資源必須放在 uri 中。

這就是 使用標準 http 方法中的 方法, 在日常的開發過程中 最常用的就是 post 和 get 方法了。當然了 post 和 get 方法也是有很大區別來的。

區別呢? 分為2點:

1) get 請求需要將 請求所帶引數放在請求的 url 中。 而 post 需要將 請求所帶引數放在 http 包的包體中。

2)get 方法提交資料最大只能是 1024 位元組。 而 post 理論上是沒有上限的。

好了~ http 方法相關的內容就這麼多。

四、支援多種資源表示方式
這裡的 多種資源表示方式需要解釋下, 資源 和 資源的表示 是兩個意思。 資源是乙個籠統的概念, 資源的表示方式 則為 具體的 資源內容呈現方法。

這裡就是需要說明一下 在 請求返回 其實返回的不是資源 而是 資源的表現形式。

五、無狀態性
restful只要維護資源的狀態,而不需要維護客戶端的狀態。對於它來說,每次請求都是全新的,它只需要針對本次請求作相應的操作,不需要將本次請求的相關資訊記錄下來以便用於後續來自相同客戶端請求的處理。

這裡可以理解為 restful 的 web 上展示的任何資訊均為通過 資源獲取的方式來獲得。 所以任何狀態值都是通過 請求返回 回來的。

so~ 今天先到這裡。 如有錯誤歡迎指正。

RESTful API 軟體架構

http協議簡單介紹 本質 核心 一種軟體架構風格 面向資源 解決問題 1,降低開發的複雜度 2,提高相同的可伸縮性 設計概念與準則 1,網路上的所有事物都可以被抽象為資源 2,每乙個資源都有唯一的資源標識,對資源的操作不會改變這些標識 3,所有的操作都是無狀態的 1,soap webservice...

RESTful架構與RESTful API設計

rest這個詞是roy thomas fielding博士在他2000年的博士 中提出的,fielding將他對網際網路軟體的架構原則定名為rest,即representational state transfer的縮寫,翻譯為 表現層狀態轉化 如果乙個架構符合rest原則,就稱它為restful架...

RESTful 架構之RESTful API詳解

rest全稱是representational state transfer,中文意思是表述 編者注 通常譯為表徵 性狀態轉移。它首次出現在2000年roy fielding的博士 中,roy fielding是http規範的主要編寫者之一。他在 中提到 我這篇文章的寫作目的,就是想在符合架構原理的...