在 restful 架構概念詳解 中聊了一些概念和約束, 本篇主要簡要的聊一聊 restful api 規範概要設計, 內容源自 阮一峰老師的部落格
服務端的 api 與 client 的通訊協議,總是使用 https 協議。
使用 https 協議和 restful api 本身沒有多大關係,但是對於增加**的安全是非常重要的,特別是如果提供的是對外暴露的公開的 api,那麼 https 就會是你非常重要的選擇了。
應該盡量將api部署在專用網域名稱之下。比如:
如果確定api很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。
一般情況下,我們將api的版本號放入url。
v1/另一種做法是,將版本號放在http頭資訊中,但不如放入url方便和直觀。github 採用這種做法。
路徑又稱」終點」(endpoint),表示api的具體**。在restful架構中,每個**代表一種資源(resource),所以**中不能有動詞,只能有名詞,而且所用的名詞往往與資料庫的**名對應。一般來說,資料庫中的表都是同種記錄的」集合」(collection),所以api中的名詞也應該使用複數。
舉例來說,有乙個 api 提供動物園(zoo)的資訊,還包括各種動物和雇員的資訊,則它的路徑應該設計成下面這樣。
v1/zoos
v1/animals
v1/employees
根據rfc3986定義,url是大小寫敏感的,所以應該盡量使用小寫字母來命名!
對於資源的具體操作型別,由http動詞表示。常用的http動詞有下面五個(括號裡是對應的sql命令)。
下面是一些常見的引數。
伺服器向使用者返回的狀態碼和提示資訊,常見的有以下一些(方括號中是該狀態碼對應的http動詞)。
如果狀態碼是4xx,就應該向使用者返回出錯資訊。一般來說,返回的資訊中將error作為鍵名,出錯資訊作為鍵值即可。
123
針對不同操作,伺服器向使用者返回的結果應該符合以下規範。
比如,當使用者向api
.example
.com
的根目錄發出請求,會得到這樣乙個文件。
123456
}
上面**表示,文件中有乙個link屬性,使用者讀取這個屬性就知道下一步該呼叫什麼api了。rel表示這個api與當前**的關係(collection關係,並給出該collection的**),href表示api的路徑,title表示api的標題,type表示返回型別。
hypermedia api的設計被稱為 hateoas。github的api就是這種設計,訪問api.github.com會得到乙個所有可用api的**列表。
12345
從上面可以看到,如果想獲取當前使用者的資訊,應該去訪問api.github.com/user,然後就得到了下面結果。
1234
上面**表示,伺服器給出了提示資訊,以及文件的**。
(1)api的身份認證應該使用oauth 2.0框架。
(2)伺服器返回的資料格式,應該盡量使用json,避免使用xml。
賞 謝謝你請我吃糖果
restful介面規範
資源 resource 任何東西都是一種資源,例如,一篇部落格文章 表示 representation 資源的一種表現形式,例如,json xml url 每個資源都應該有乙個對應的url uri url是uri的一種,url都有對應的資源,而uri不一定,它強調的是一種資源標識 get 獲得乙個資...
restful規範介紹
團隊之間協作有很多的介面規範,團隊做大了,平台之間的資料傳輸的規範需要定義好。需要有乙個閥,restful 就是這樣的乙個規範,我們都應該遵守這樣的乙個規範。越來越多的人意識到,即軟體,而且是一種新型的軟體 開發,完全可以採用軟體開發的模式。但是傳統上,軟體和網路是兩個不同的領域,網際網路的興起讓這...
RESTful格式規範
restful是介面開發格式裡面很重要的乙個山頭,基本開發介面都需要遵守這個規範,它共有十條規範格式 1 網域名稱,一般將api放在組網域名稱下 3 路徑,路徑表示api的具體 代表一種資源,中不能使用動詞,只能使用名詞,而其必須是複數 4 使用標準的http方法,由http動詞組成 get sel...