RESTful API的開發和使用,無非是客戶端向服務器發請求(request),以及服務器對客戶端請求的響應(response)。具備統一接口的特色,即,使用不一樣的http方法表達不一樣的行爲:json
經常使用的Response要包含的數據和狀態碼(status code),不完善的內容,歡迎你們補充:api
GET
, PUT
和PATCH
請求成功時,要返回對應的數據,及狀態碼200
,即SUCCESSPOST
建立數據成功時,要返回建立的數據,及狀態碼201
,即CREATEDDELETE
刪除數據成功時,不返回數據,狀態碼要返回204
,即NO CONTENTGET
不到數據時,狀態碼要返回404
,即NOT FOUND400
,即BAD REQUEST401
,即NOT AUTHORIZED403
,即FORBIDDEN 最後,關於Request 和 Response,不要忽略了http header中的Content-Type。以json爲例,若是API要求客戶端發送request時要傳入json數據,則服務器端僅作好json數據的獲取和解析便可,但若是服務端支持多種類型數據的傳入,如同時支持json和form-data,則要根據客戶端發送請求時header中的Content-Type,對不一樣類型是數據分別實現獲取和解析;若是API響應客戶端請求後,須要返回json數據,須要在header中添加Content-Type=application/json
。數組
使用方式服務器
GET http://www.birjemin.com/api/user # 獲取列表app
POST http://www.birjemin.com/api/user # 建立用戶設計
PUT http://www.birjemin.com/api/user/{id} # 修改用戶信息code
DELETE http://www.birjemin.com/api/user/{id} # 刪除用戶信息orm
設計要素對象
速度限制
若是對訪問的次數不加控制,極可能會形成 API 被濫用,甚至被 DDos 攻擊。根據使用者不一樣的身份對其進行限流,能夠防止這些狀況,減小服務器的壓力。爲此 RFC 6585 引入了HTTP狀態碼429(too many requests)。加入速度設置以後,應該提示用戶,至於如何提示標準上沒有說明,不過流行的方法是使用HTTP的返回頭。接口
對用戶的請求限流以後,要有方法告訴用戶它的請求使用狀況,Github API 使用的三個相關的頭部:
X-RateLimit-Limit: 用戶每一個小時容許發送請求的最大值
X-RateLimit-Remaining:當前時間窗口剩下的可用請求數目
X-RateLimit-Rest: 時間窗口重置的時候,到這個時間點可用的請求數量就會變成X-RateLimit-Limit的值
若是容許沒有登陸的用戶使用 API(可讓用戶試用),能夠把 X-RateLimit-Limit 的值設置得很小,好比 Github 使用的 60。沒有登陸的用戶是按照請求的 IP 來肯定的,而登陸的用戶按照認證後的信息來肯定身份。
對於超過流量的請求,能夠返回429 Too many requests狀態碼,並附帶錯誤信息。而 Github API 返回的是403 Forbidden,雖然沒有 429 更準確,也是能夠理解的。
宗旨:
漂亮、簡潔、優雅