【 js 基礎 】【 源碼學習 】backbone 源碼閱讀(三)

來源:互聯網
上載者:User

標籤:分解   methods   post   send   可見度   短訊息   call   delete   nbsp   

最近看完了 backbone.js 的源碼,這裡對於源碼的細節就不再贅述了,大家可以 star 我的源碼閱讀項目(https://github.com/JiayiLi/source-code-study)進行參考交流,有詳細的源碼注釋,以及知識總結,同時 google 一下 backbone 源碼,也有很多優秀的文章可以用來學習。

我這裡主要記錄一些偏設計方向的知識點。這篇文章主要講 backbone.sync 中用到的 Rest 和 CRUD。

首先我們簡單瞭解一下 REST:

REST : Representational State Transfer,即具象狀態傳輸,是一種架構設計風格,Web服務實現方案之一,目的是便於不同軟體/程式在網路(例如互連網)中互相傳遞資訊。

這個設計風格的要求有以下6點:
a、客戶-伺服器(Client-Server)
通訊只能由用戶端單方面發起,表現為用戶端請求-伺服器響應的形式。
b、無狀態(Stateless)
通訊的工作階段狀態(Session State)應該全部由用戶端負責維護。
c、緩衝(Cache)
響應內容可以在通訊鏈的某處被緩衝,以改善網路效率。
d、統一介面(Uniform Interface)
通訊鏈的組件之間通過統一的介面相互連信,以提高互動的可見度。
e、分層系統(Layered System)
通過限制組件的行為(即每個組件只能“看到”與其互動的緊鄰層),將架構分解為若干等級的層。
f、按需代碼(Code-On-Demand,可選)
支援通過下載並執行一些代碼(例如Java Applet、Flash或JavaScript),對用戶端的功能進行擴充。

以上來自 wiki (https://zh.wikipedia.org/wiki/REST),看起來比較難懂。

 

我們通過 backbone 中 sync 模組對其的應用來理解, 在 sync 模組中,使用了 基於 REST 設計風格的 http 服務在 backbone 的 model(負責資料模組) 上執行 CRUD 操作。
所謂 http 服務,它只做兩件事:處理 http 請求和發送 http 響應。
而對於 REST 本身是一種設計風格,他告訴我們如何使用 http 協議,重點體現在 介面API 的設計上。
當我們設計的介面滿足 REST 約束條件和原則,就稱為它是 RESTful API(RESTful相當於一個形容詞)。

我們來舉兩個我們經常會接觸到的 api 以及 http 請求(GET、POST):
1、GET 例子:部落格園擷取“我的部落格”頁面(“我的部落格”連結地址:http://www.cnblogs.com/lijiayi/)

來看一下瀏覽器向伺服器發起的請求報文:

重點是第一行

GET /lijiayi/ HTTP/1.1

其中GET : 表示請求的方法,還有 最常用的 POST 以及 DELETE、 PUT等。/lijiayi/ : 請求路徑。HTTP/1.1:協議以及版本。 2、POST 例子:部落格園撰寫新短訊息,提交表單

來看一下瀏覽器向伺服器發起的請求報文:

 

重點是第一行

POST /ajax/msg/send HTTP/1.1


同樣
POST : 表示請求的方法。
/ajax/msg/send: 請求路徑。
HTTP/1.1:協議以及版本。

以上是我們最常見的請求方式,非 RESTful API。

而在 backbone 的 sync 中,則讓我們這樣請求介面:

 Backbone.sync(method, model, [options])

sync 接受三個參數,其中 method 參數傳入 CRUD 方法 即"create", "read", "update", “delete”以及“patch”,而他們則對應了http要求方法的“POST”、“GET”、“PUT”、“DELETE”和“PATCH”。

 可以看到 我們用了大部分的 http 要求方法(還有CONNECT、OPTIONS等,有興趣的可以瞭解一下:http://www.runoob.com/http/http-methods.html)。針對使用者不同的操作,對應不同的要求方法。而對於 請求的 url ,我們則會這樣定義:
/questions  //查看所有的問題列表/questions/:id  //操作 ID 為 id 的問題

只需要上面兩個路由,我們就可以查看所有的問題,並對其中一個進行操作,這個操作包括增刪改查,對於我們具體要執行什麼操作,就是由上面的 method 也就是不同的 http 方法來控制的。而這種 api 的設計就是符合 RESTful API。

你大概有個認識了,咱們系統的在說一下:
符合REST設計風格的Web API稱為RESTful API。它要求我們擁有:
1、直觀簡短的請求地址:比如:http://example.com/resources/。
2、對於我們請求的資源的表現形式可以是XML、HTML或者 Json等。
3、對資源的操作:用 http 方法來實現,或者說是表達(比如:POST,GET,PUT或DELETE)。

也就是說 用 URL定位資源,用 HTTP 動詞(GET,POST,DELETE,PUT)描述操作。(來自知乎 https://www.zhihu.com/question/28557115/answer/41265890)
通常:

URL  GET POST DELETE PUT

一組資源:
http://example.com/resources/

擷取該資源群組中的所有資來源詳細資料 在本組資源中建立/追加一個新的資源 刪除資源群組 使用給定的一組資源替換當前的資源群組

單個資源:
http://example.com/resources/12

擷取指定的資源的詳細資料

把指定的資源當做一個資源群組,

並在其下建立/追加一個新的元素,使其隸屬於當前資源

刪除資源群組中特定的資源

替換/建立指定的資源,

並將其增加到相應的資源群組

 

 

以上。   感謝並學習自:https://stackoverflow.com/questions/18504235/understand-backbone-js-rest-callshttps://zh.wikipedia.org/wiki/REST 推薦:https://www.zhihu.com/question/28557115  很多人的回答很好也很深入,有想更詳細瞭解的同學,推薦閱讀。

  

【 js 基礎 】【 源碼學習 】backbone 源碼閱讀(三)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.