drf1 rest & restful規範

 

web服務交互

咱們在瀏覽器中能看到的每一個網站,都是一個web服務。那麼咱們在提供每一個web服務的時候,都須要先後端交互,先後端交互就必定有一些實現方案,咱們一般叫web服務交互方案。
  目前主流的三種web服務交互方案:
    -- REST ( Representational State Transfer)表述性狀態轉移
    -- SOAP (Simple Object Access Protocol)  簡單的對象訪問協議
    -- XML-RPC (XML Remote Procedure Call)基於XML的遠程過程調用

  XML-RPC是經過XML將調用函數封裝,並使用HTTP協議做爲傳送機制。
  後來在新的功能不斷被引入下,這個標準慢慢演變成爲今日的SOAP協定。
  SOAP服務則是以自己所定義的操做集,來訪問網絡上的資源。
  SOAP也是基於XML的,可是它不僅限於HTTP協議的傳輸,包括TCP協議,UDP協議均可以傳輸。
  REST是Roy Thomas Fielding博士於2000年在他的博士論文裏提出來的。
  REST相比SOAP更加簡潔,性能和開發效率也有突出的優點。
如今愈來愈多的web服務開始採用REST風格設計和實現。
例如,amazon.com提供接近REST風格的Web服務進行圖書查找;雅虎提供的Web服務也是REST風格的。

理解REST
  若是咱們想要理解restful,就要理解Representational State Transfer這個詞組的意思,表徵性狀態轉移。
  這裏所說的表徵性,其實指的就是資源。一般咱們稱爲資源狀態轉移。

什麼是資源
  任何事物,只要有被引用到的必要,它就是一個資源。
  咱們在瀏覽器中看到的文本,視頻,圖片等等都是資源。這些都是實實在在存在的實體。
  資源能夠是一個實體,也能夠是抽象概念。
  那麼在咱們的網絡中,咱們要引用資源,資源必定要有一個標識,在web中的惟一標識就是URI, 

 

 

什麼是URI,URL
  URI 統一資源標誌符。
  URL 統一資源定位符。
  URI是給咱們的資源進行標識的,URL是描述咱們資源地址的。
  好比說咱們每一個人都有名字和身份證,名字可能重名,可是身份證是惟一的,
  那麼身份證號就能夠是咱們的URI,標識咱們每一個人,也能夠說標識咱們每一個資源。
  其實咱們的URL能夠說是URI的子集,經過定位的方式實現的URI。

統一資源接口
  如今咱們能夠經過URL去訪問到資源,那麼咱們對資源會有不少不一樣的操做,增刪改查,
  根據HTTP請求方式的不一樣,對資源進行不一樣的操做,這個就是是統一資源接口。
  咱們必定要遵循HTTP請求方法的語義,也就是說POST請求就在新增數據等....

資源的表述
  資源的表述其實就是資源的展示形式,咱們客戶端和服務端傳輸的都是資源的表述,而不是資源自己。
  例如文本資源能夠採用html、xml、json等格式,圖片可使用PNG或JPG展示出來。 
  能夠經過HTTP內容協商,客戶端能夠經過Accept頭請求一種特定格式的表述,服務端則經過Content-Type告訴客戶端資源的表述形式。
  這些資源的表述呈如今頁面上,就是咱們說的資源狀態。

狀態轉移   咱們在看頁面的時候,從當前資源的表述(也能夠說狀態或者表現層)會跳轉到其餘的資源狀態。   服務端經過超媒體告訴客戶端當前狀態有哪些後續狀態能夠進入。   這些相似
"下一頁"之類的連接起的就是這種推動狀態的做用——指引你如何從當前狀態進入下一個可能的狀態。
總結    能夠得知REST風格的特色以下:  (
1)在web中,只要有被引用的必要都叫資源。   (2)每一個URI表明一個資源,獨一無二的。   (3)客戶端經過HTTP的方法,對服務器端資源進行操做;   (4)客戶端和服務器之間,傳遞這種資源的某種表現層;   (5)經過超連接的指引,實現"表現層狀態轉移"

 



RESTful  

  若是一個架構符合REST的約束條件和原則,咱們就稱它爲RESTful架構。css

  一種軟件的架構風格,設計風格,  爲客戶端和服務端的交互提供一組設計原則和約束條件。html

restful規範

一 面向資源編程   每一個URL表明一種資源,URL中儘可能不要用動詞,要用名詞。
二 根據method不一樣,進行不一樣的操做   GET
/POST/PUT/DELETE/PATCH
三 在URL中體現版本   https:
//www.bootcss.com/v1/mycss   https://v1.bootcss.com/mycss
四 在URL中體現是不是API   https://www.bootcss.com/api/mycss   https://api.bootcss.com/mycss
五 在URL中的過濾條件   https://www.bootcss.com/v1/mycss?page=3
六 儘可能使用HTTPS   https://www.bootcss.com/v1/mycss
七 響應時設置狀態碼   1** 信息,服務器收到請求,須要請求者繼續執行操做   2** 成功,操做被成功接收並處理   3** 重定向,須要進一步的操做以完成請求   4** 客戶端錯誤,請求包含語法錯誤或沒法完成請求   5** 服務器錯誤,服務器在處理請求的過程當中發生了錯誤
八 返回值   GET請求     返回查到全部或單條數據   POST請求   返回新增的數據   PUT請求   返回更新數據   PATCH請求   局部更新 返回更新整條數據   DELETE請求   返回值爲空
九 返回錯誤信息   返回值攜帶錯誤信息
十 Hypermedia API   若是遇到須要跳轉的狀況 攜帶跳轉轉接口的URL   ret
= { code: 1000, data:{ id:1, name:'小強', depart_id:http://www.luffycity.com/api/v1/depart/8/ } }
相關文章
相關標籤/搜索