1)rest與技術無關,代表的是一種軟體架構風格(rest是representational state transfer的簡稱,中文翻譯為「表徵狀態轉移」)
2)rest從資源的角度類審視整個網路,它將分布在網路中某個節點的資源通過url進行標識
3)所有的資料,不過是通過網路獲取的還是操作(增刪改查)的資料,都是資源,將一切資料視為資源是rest區別與其他架構風格的最本質屬性
4)對於rest這種面向資源的架構風格,有人提出一種全新的結構理念,即:面向資源架構(roa:resource oriented architecture)
什麼是api?
api就是介面,提供的url。介面有兩個用途:
api與使用者的通訊協議,總是使用https協議。
有兩種方式
方式一: 盡量將api部署在專用網域名稱(會存在跨域問題)
方式二:如果確定api很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。
api版本一般放在url中,簡潔明瞭,例:
/v1/
另一種做法是,將版本號放在http頭資訊中,但不如放入url方便和直觀。github採用這種做法。
可以採用駝峰命名法,也可以採用下劃線命名的方式,推薦採用下劃線命名的方式,使用採用下劃線的的方式識別度更高。
api 命名為保持簡潔明瞭,應該採用約定俗成的方式。在restful架構中,每個url代表一種資源,所以url中均使用名詞表示(可複數)。
不規範的的url,形式不固定,可讀性不強,增加維護和閱讀成本,不同的開發者需要了解文件才能呼叫。
get 獲取所有使用者
get 獲取標識為1使用者資訊
get/post 刪除標識為1使用者資訊
post 更新標識為1使用者資訊
post 新增新的使用者
規範後的restful風格的url,形式固定,可讀性強,根據名詞就可以清楚的知道在操作哪些資源。
get 獲取所有使用者資訊
/1 get 獲取標識為1使用者資訊
/1 delete 刪除標識為1使用者資訊
/1 patch 更新標識為1使用者部分資訊,包含在body中
post 新增新的使用者
對於資源的具體操作型別,由http動詞表示。常用的http動詞有下面五個(括號裡是對應的sql命令)。了解常見http請求方法。
get(select):從伺服器取出資源(一項或多項)。即獲取資料
post(create):在伺服器新建乙個資源。 即新增資料
put(update):在伺服器更新資源(客戶端提供改變後的完整資源)。即更新資料
patch(update):在伺服器更新資源(客戶端提供改變的屬性)。即更新資料
delete(delete):從伺服器刪除資源 。即刪除資料
下面是一些例子:
get /users:列出所有使用者
post /users:新建乙個使用者
get /users/id:獲取某個指定使用者的資訊
put /users/id:更新某個指定使用者的資訊(提供該使用者的全部資訊)
patch /users/id:更新某個指定使用者的資訊(提供該使用者的部分資訊)
delete /users/id:刪除某個使用者
get /users/id/infos:列出某個指定使用者的所有資訊
delete /users/id/infos/id:刪除某個指定使用者的指定資訊
指定返回記錄的數量
指定返回記錄的開始位置
指定第幾頁,以及每頁的記錄數
指定返回結果按照哪個屬性排序,以及排序順序
指定篩選條件
針對不同操作,伺服器向使用者返回的結果應該符合以下規範:
get /collection:返回資源物件的列表(陣列)
get /collection/resource:返回單個資源物件
post /collection:返回新生成的資源物件
put /collection/resource:返回完整的資源物件
patch /collection/resource:返回完整的資源物件
delete /collection/resource:返回乙個空文件
統一返回資料格式
對於合法的請求應該統一返回資料格式,這裡只說明一下json的方式:
返回成功的響應
}
返回失敗的響應
比如,當使用者向api.example.com的根目錄發出請求,會得到這樣乙個文件。
}
hypermedia api的設計被稱為hateoas。github的api就是這種設計,訪問api.github.com會得到乙個所有可用api的**列表。
從上面可以看到,如果想獲取當前使用者的資訊,應該去訪問api.github.com/user,然後就得到了下面結果。
什麼是真正的RESTFUL API
什麼是真正的restful api 很多人一想到restful,以為就是http json。其實不然,restful也可以是http protobuf或別的通訊和序列。restful是一種架構思想,而不是指某一種技術。今天,筆者分別演示http protobuf和http json的restful ...
RESTful API 軟體架構
http協議簡單介紹 本質 核心 一種軟體架構風格 面向資源 解決問題 1,降低開發的複雜度 2,提高相同的可伸縮性 設計概念與準則 1,網路上的所有事物都可以被抽象為資源 2,每乙個資源都有唯一的資源標識,對資源的操作不會改變這些標識 3,所有的操作都是無狀態的 1,soap webservice...
RESTful API 架構解讀
首先我們還是先介紹下 restful api 的來龍去脈。首先,restful 下文都簡稱 restful api 為 restful 1 restful 這個概念最早是在 2000年 roy thomas fielding 博士在他的博士 architectural styles and the ...