深入理解REST(一)

2021-04-14 23:50:48 字數 1604 閱讀 8000

。。。

1.

什麼是

rest

rest是representational state transfer的縮寫,**於

r. fielding

的一篇博士**:

《architectural styles and the design of network-based software architectures 》

。rest不是什麼規範,而是一種架構,一種網路應用的架構。可以把rest理解成一種設計模式,就像其他設計模式一樣,只不過rest這種設計模式是應用在網路應用架構上的。

1.1

rest的含義

為了進一步理解什麼是

rest,讓我們看看

representational state transfer

這三個英文單詞分別表示什麼意思:

中文直譯:代表的,表像的。如果把

web伺服器端中所有的東西(資料)都看作是資源(resource),那麼呈現在使用者面前(客戶端)的就是資源的表像(representation)。同乙個資源可能有不同表像,例如乙個人作為乙個resource,那麼他的表像(representation)可以是一張(相片),也可以是乙個xml描述的個人資訊,等等。每乙個資源都有自己的唯一標識(uri)。

中文直譯:狀態。這個比較難理解。首先這個狀態是客戶端的狀態,而不是伺服器端的狀態(在

rest中,伺服器端應該是無狀態的)。那麼,把state和representation聯絡在一起(representational state),可以理解成:每乙個資源(resource)在客戶端的表像(representation)就是客戶端的乙個狀態(state)。

中文直譯:轉移。當使用者通過不同的

uri訪問不同的資源時,客戶端的表像(representation)也會隨著變化,也就意味著客戶端的狀態變更(transfer)了,連起來就是:representational state transfer。

1.2

rest架構的特點

分層結構,像

tcp/ip

的分層結構一樣,第

n層使用第

n-1層提供的服務並為第

n+1層提供服務。在

rest

中,client-server

之間加入了

proxy

層和gateway

層。在這些中間層可以加入一些業務處理以外的功能,譬如:負載均衡,安全控制等等。

code-on-demand

,客戶端可以訪問伺服器端的

resource

,但並不知道如何處理伺服器端返回的結果,這個處理過程的**應該是從伺服器端傳送過來,然後在客戶端執行,也就是說客戶端的功能是根據需要動態從伺服器端獲得的。乙個很簡單的例子,

optional

),也就是說在你的

rest

實現當中,可以不考慮這個特性。

深入理解DataAdapter(一)

ado.net有兩個核心元件 基於連線的data provider元件以及基於非連線的dataset元件。基於連線的data provider元件常用於實時地從資料庫中檢索資料。而基於非連線的dataset,似乎與資料庫沒有直接聯絡,僅僅用於在本地記憶體中儲存data provider提供的資料表或...

js深入理解 一

1if a b 兩者等價 a b alert hello word 2.給eval取別名var a 111 var b eval var c b a alert c 輸出 111 3.刪除元素 不能刪除 var語句宣告的變數 var o delete o.x alert o.x 輸出 undefin...

深入理解C (一)

深入理解c 1.list排序以及搜尋 using system using system.collections.generic using system.linq using system.text using system.threading.tasks decimal price public...