一、什麼是Rest?
REST不是"rest"這個單詞,而是幾個單詞縮寫 -- REpresentational State Transfer 直接翻譯:表現層狀態轉移,但這個翻譯正常人根本看不懂,找到的一種最好理解的說法是,URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
REST成熟度的四個層次
第一個層次(Level0)的Web 服務只是使用 HTTP 作為傳輸方式,實際上只是遠端方法呼叫(RPC)的一種具體形 式。SOAP和 XML-RPC都屬於此類。
第二個層次(Level1)的Web 服務引入了資源的概念。每個資源有對應的識別符號和表達。
第三個層次(Level2)的Web 服務使用不同的 HTTP 方法來進行不同的操作,並且使用HTTP 狀態碼來表示不同的結果。如 HTTPGET 方法來獲取資源,HTTPDELETE 方法來刪除資源。
第四個層次(Level3)的Web 服務使用 HATEOAS。在資源的表達中包含了連結資訊。客戶端可以根據連結來發現可以執行的動作。
二、Restful api介面有什麼特徵?
REST描述的是在網路中client和server的一種互動形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網路介面)。
1.URL的根路徑
http://api.chesxs.com/v1
2.需要有api版本資訊
http://api.chesxs.com/v1
3.URL中只使用名詞指定資源,不用動詞,且推薦使用複數
服務(Server)提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。“資源”是REST架構或者說整個網路處理的核心。比如:
http://api.chesxs.com/v1/cars // 獲取某個賬戶下的車輛列表
http://api.chesxs.com/v1/fences // 獲取某個賬戶下的圍欄列表
4. 用HTTP協議裡的動詞來實現資源的新增,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉
GET 用來獲取資源, POST 用來新建資源(也可以用於更新資源)。比如:POST http://api.chesxs.com/v1/car: 新增車輛 PUT 用來更新資源, DELETE 用來刪除資源。比如:DELETE http://api.chesxs.com/v1/cars 刪除某輛車 (在http parameter指定好友id)
UPDATE http://api.chesxs.com/v1/fence 更新圍欄資訊
錯誤使用: GET http://api.chesxs.com/v1/deleteCar 刪除車輛
5.GET應該是安全的,不會改變資源狀態
這個應該很好理解,get的時候就只是獲取資源,而不涉及新增、更新、刪除資源。
6.使用正確的HTTP Status Code返回狀態碼
常用的有404,200,500,400等等。
7.過濾資訊
如果記錄數量很多,伺服器不可能都將它們返回給使用者。API應該提供引數,過濾返回結果。
下面是一些常見的引數。
?limit=10:指定返回記錄的數量 ?offset=10:指定返回記錄的開始位置。 ?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。 ?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。 ?producy_type=1:指定篩選條件
8.規範返回的資料
為了保障前後端的資料互動的順暢,建議規範資料的返回,並採用固定的資料格式封裝。
介面返回模板:
{
status:0,
data:{}||[],
msg:’’
}
總結,看一個標準的restful api要可以做到
看Url就知道要操作的資源是什麼,是操作車輛還是圍欄
看Http Method就知道操作動作是什麼,是新增(post)還是刪除(delete)
看Http Status Code就知道操作結果如何,是成功(200)還是內部錯誤(500)
參考文章:https://www.cnblogs.com/bndong/p/6139598.html