目錄html
REST是Representational StateTransfer的簡稱,中文翻譯爲"表徵狀態轉移"或"表現層狀態轉化",自己與技術無關, 其表明的是一種軟件架構風格,統一的架構開發風格,會減小開發者之間很多障礙.數據庫
[推薦閱讀>>][2]
[2]: http://www.ruanyifeng.com/blog/2014/02/ssl_tls.htmljson
API部署在專用域名之下api
https://api.example.com
API很簡單不會有進一步擴展的時候能夠放在主域名下數組
https://example.org/aip/
API版本號放入到URl瀏覽器
API版本HTTP頭信息中restful
名詞使用負數架構
https://api.example.com/v1/zoos
https://api.example.com/v1/animals
https://api.example.com/v1/employeesapp
GET: 從資源覽器取出資源(一項或多項)
POST: 在瀏覽器新建一個資源
PUT: 在服務器更新資源(客戶端提供改變後的完整資源)
PATCH: 在服務器更新資源(客戶端提供改變的屬性)
DELETE: 從服務器刪除資源
經過在url上傳參的形式傳遞搜索條件
https://api.example.com/v1/zoos?limit=10:指定返回記錄的數量
https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結果按照哪一個屬性排序,以及排序順序
https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件
1xx:表示信息類 2xx:成功類 3xx:重定向 4xx:客戶端錯誤 5xx:內部服務器錯誤
[狀態碼大全>>][2]
[2]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
狀態碼是4xx時,返回錯誤信息,error當作key
{ error: "Invalid API key" }
針對不一樣操做, 服務器向用戶返回的結果應該符合如下規範
GET /collection:返回資源對象的列表(數組) GET /collection/resource:返回單個資源對象 POST /collection:返回新生成的資源對象 PUT /collection/resource:返回完整的資源對象 PATCH /collection/resource:返回完整的資源對象 DELETE /collection/resource:返回一個空文檔
RESTful API最好作到Hypermedia,即返回結果中提供連接,連向其餘API方法,使得用戶不查文檔,也知道下一步應該作什麼。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}
API的身份認證應該使用[OAuth 2.0框架>>][2]
[2]: http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
服務器返回的數據格式, 應該儘可能使用JSON, 避免使用XML.