簡單說說Restful API

跳躍的鍵盤手發表於2020-09-25

前言:

最近一段時間,一直在低頭敲程式碼,開發平臺對外互動的API介面,功能已經大體完成了,回過頭來看看自己的介面設計文件,不勝感慨,想當初自己也是為介面名稱想破了腦袋,各種百度英文。今天一位老同事走過來看了一眼,隨口說了一句,你這介面一點Restful風格沒有。。。看一眼你的介面命名規則就知道,我只能點點頭,也是。

之前也有接觸過REST介面設計風格,時間長了,終究還是都還回去了。今天也是準備把這塊知識點拾掇起來,再重新認識一下,感興趣的同學可以一起來了解了解。

正文:

 先簡單說說什麼是Restful API

        RESTFUL是一種網路應用程式的設計風格和開發方式,基於HTTP,可以使用XML格式定義或JSON格式定義。

RESTFUL是一種架構風格,定義了一組規則和約束,符合REST風格的API介面稱作為Restful API

REST(Representational State Transfer)中文翻譯過來可以理解為表現層狀態轉化

 

主要特點:
1.
資源

REST全稱是表現層狀態轉化,那究竟指的是什麼的表現? 其實指的就是資源,現實網路中各種各樣資訊的傳遞,互動,我們可以將這些資訊抽象為資源,比如一張圖片,一段文字,一個檔案等。

在網路中我們使用統一資源標識URI(Uniform Resource Identifier)來標識一個資源,類似於給你一張身份證,大家根據身份證就能知道你是誰。

REST風格可以說是面向資源的,它請求的是一個資源,該資源往往用一個名詞表示,不會出現動詞(也是區別於RPC風格的一點)。

2.表現層

REST全稱是表現層狀態轉化,既然是面向資源,為什麼不叫資源狀態轉化呢?

我們會發現往往在網路中互動的都是xmljsonhtml等格式資料,這些格式可以理解為資源對外表現的一種形式,這也就說明了實際上網路中互動的是資源的表現,並不只是單純的資源本身。

3.狀態的轉化

現實網路中,往往是客戶端發起一個請求,服務端進行相應的回應。在這個過程中,勢必涉及到資料和狀態的變化。而網際網路通訊協議HTTP,是一個無狀態協議。這也就意味著,資源的狀態都儲存在伺服器端。由客戶端發起POST,PUT等操作,引起服務端對資源進行操作,發生狀態的轉化

4.資源的連結(超媒體概念

資源的連結可以理解為從一個資源跳轉到另一個資源

實際應用中我們發起對一個介面的請求,介面會返回一些資料,這些資料可能除了圖片,json字串等,有時候還會包含一個地址,這個地址往往是對下一個資源請求的地址。

5.HTTP動詞
        GET-
查詢                                                         安全,冪等性 
        POST-
新增或者更新                                        非安全,非冪等性
        PUT
(客戶端提供改變後的完整資源)-更新   非安全,冪等性

        PATCH(客戶端提供改變的屬性)-更新         非安全,冪等性

        DELETE-刪除                                                  非安全,冪等性


       安全性:操作不會改變資源的狀態
       冪等性:操作一次和操作N次,對資源改變的效果是一樣的。

 

小結

綜合上面的解釋,我們總結一下什麼是RESTful架構:

   (1)每一個URI代表一種資源;

   (2)客戶端和伺服器之間,傳遞這種資源的某種表現層;

   (3)客戶端通過四個HTTP動詞,對伺服器端資源進行操作,實現"表現層狀態轉化"

 

經過上面的瞭解,回過頭來再看看我之前設計的介面URL,比如:htpp://localhost/Person/GetAll。真是被老同事一語中的哇。。。

 

相關文章