REST API 的一些理解

        這兩天接口寫的比較多,也一直聽大佬們講REST ful什麼什麼的,也因爲業務需要,於是對REST api產生的比較濃厚的興趣,想系統的整理一下關於一些此內容,如果邏輯語句有不通順的地方,望見諒[手動滑稽]

REST不是英文上的rest單詞,其英文縮寫爲presentational State Transfer ,直譯爲表現狀態轉移,這個詞理論性比較強,理解起來比較困難,可以把它理解成一種約束和架構(設計),主要是風格。這裏可參考http://www.ruanyifeng.com/blog/2011/09/restful.html它所強調的是提供統一的接口供不同的平臺使用。

        衆所周知,很久之前的web開發前後端的界限是非常模糊的,就像JSP,包括現在也有一些業務性質很強的web項目依舊這樣,例如各種後臺管理系統和我正在做的(QAQ),當然這些都是一些對頁面美觀要求不高的而對業務要求比較強的,但是對一些要求比較高例如p2p的項目來說,對前端頁面的考究程度就比較高了,對於開發人員來說,能後端寫的6而前端也玩的轉的人,不能說沒有,那也是很少而又少的,所以,具體職能分化勢在必行,這就是現在畢竟流行的前後端分離了。這樣的效率遠比之前的前後端一把抓更高。

        於是乎,一套簡潔明瞭高效的接口定義規範就至關重要了,RESTful就符合這幾點的定義

    1.資源

所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務,總之就是一個具體的實在。資源總要通過某種載體反應其內容,文本可以用txt格式表現,也可以用HTML格式、XML格式表現,甚至可以採用二進制格式;圖片可以用JPG格式表現,也可以用PNG格式表現;JSON是現在最常用的資源表示格式。

    2.統一接口

RESTful架構風格規定,數據的元操作,即CRUD(create, read, update和delete,即數據的增刪查改)操作,分別對應於HTTP方法:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),PUT用來更新資源,DELETE用來刪除資源,這樣就統一了數據操作的接口,僅通過HTTP方法,就可以完成對數據的所有增刪查改工作。

    3.url

可以用一個URI(統一資源定位符)指向資源,即每個URI都對應一個特定的資源。要獲取這個資源,訪問它的URI就可以,因此URI就成了每一個資源的地址或識別符。

    4.無狀態

所謂無狀態的,即所有的資源,都可以通過URI定位,而且這個定位與其他資源無關,也不會因爲其他資源的變化而改變。有狀態和無狀態的區別,舉個簡單的例子說明一下。如查詢員工的工資,如果查詢工資是需要登錄系統,進入查詢工資的頁面,執行相關操作後,獲取工資的多少,則這種情況是有狀態的,因爲查詢工資的每一步操作都依賴於前一步操作,只要前置操作不成功,後續操作就無法執行;如果輸入一個url即可得到指定員工的工資,則這種情況是無狀態的,因爲獲取工資不依賴於其他資源或狀態,且這種情況下,員工工資是一個資源,由一個url與之對應,可以通過HTTP中的GET方法得到資源,這是典型的RESTful風格。

對於此,引用網上的我覺得深有同感的理解就是:

看Url就知道要什麼。

看http method就知道幹什麼。

看http status code就知道結果如何

再簡單點來說引用網上的理解就是:

就是用URL定位資源,用HTTP描述操作。

簡單粗暴。。。


用於學習筆記總結,侵刪.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章