REST API是基於HTTP協議進行設計的,由HTTP動詞+URI組成
集合是資源的一個容器(目錄),能夠向裏面添加 資源(文檔);
客戶端管理的一個資源庫,能夠向倉庫中新增資源 或者刪除資源,或者從倉庫中獲取資源;
文檔(Document)類型的資源用 名詞單數命名
集合(Collection)類型的資源用 名詞複數命名
倉庫(Store)類型的資源用 名詞複數命名
控制器(Controller)類型的資源用 **動詞**命名
URI中有些字段能夠是變量,在實際使用中能夠按需替換,例如:
http://api.soccer.restapi.org/leagues/{leagueId}/teams/{teamId}/players/{playerId}
--- 其中:leagueId,teamId,playerId 是變量(數字,字符串等類型均可以)。
URI中分隔符「/」通常用來對資源層級的劃分, 」/「不該該出如今URL的末尾;
URI中儘可能使用連字符"-"代替下劃線"_"的使用
例如: http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post
URI中統一使用小寫字母
URI中不要包含文件(或腳本)的擴展名
例如:不要出來.php或者.json之類的後綴名。
CRUD的操做不要體如今URI中
做爲查詢的參數補充,以標示一個惟一的資源
做爲過濾條件使用,例如:
GET /users?role=admin
做爲資源列表分頁標示使用,例如:
GET /users?pageSize=25&pageStartIndex=50
2xx:操做成功
3xx:重定向
4xx:客戶端錯誤
5xx:服務器錯誤
200 (「OK」) :通常性的成功返回,不可用於請求錯誤返回;
201 (「Created」) :資源被建立;
202 (「Accepted」) :Controller控制類資源異步處理的返回,僅表示請求已經收到;
204 (「No Content」) :可能會出如今PUT、POST、DELETE的請求中;
303 (「See Other」) :返回一個資源地址URI的引用,但不強制要求客戶端獲取該
地址的狀態;
400 (「Bad Request」) :客戶端通常性錯誤返回, 其它4xx的錯誤,也能夠使用400,
具體錯誤信息能夠放在body中;
401 (「Unauthorized」) :認證錯誤;
404 (「Not Found」) :找不到URI對應的資源;
500 Internal Server Error:服務器處理請求時發生了意外;
503 Service Unavailable:服務器沒法處理請求,通常用於網站維護狀態。
Content-Type :body的數據格式,如Content-type: application/json,表示主類型是application,數據格式是json
Content-Length :body 數據體的大小
Last-Modified :資源最後被修改的時間戳
ETag :服務器端資源版本的標示
Location :在響應header中使用
Cache-Control, Expires, Date : 經過緩存機制提高接口響應性能
Floodlight北向API對外提供了四個模塊:OpenFlow流表、防火牆、ACL、多租戶網絡虛擬化。
查詢全部ACL規則:GET http://<controller_ip>:8080/wm/acl/rules/json
添加ACL規則:POST http://<controller_ip>:8080/wm/acl/rules/json
刪除一條ACL:DELETE http://<controller_ip>:8080/wm/acl/rules/json
刪除全部ACL:GET http://<controller_ip>:8080/wm/acl/clear/json
使用POST動詞具體建立ACL或是使用DELETE動詞刪除某條ACL時,還須要在json中帶上須要傳輸的數據。例如以curl爲例:
curl -X POST -d
'{"src-ip":"10.0.0.1/32","dst-ip":"10.0.0.2/32","action":"deny"}'
http://<controller_ip>:8080/wm/acl/rules/json