基於REST架構的Web Service設計

2021-09-06 19:39:42 字數 4349 閱讀 9751

先前我曾經介紹過利用

apache axis實現基於soap的web service實現技術和相關**,總的來說,soap的web service解決方案雖然較為成熟,且安全性較好,但是使用門檻較高,在大併發情況下會有效能問題,在網際網路上使用不太普及,因此並不太適合web 2.0**服務使用,目前大量的web 2.0**使用另外一種解決方案——rest。

rest的架構設計

rest(representational state transfer)是一種輕量級的web service架構風格,其實現和操作明顯比soap和xml-rpc更為簡潔,可以完全通過http協議實現,還可以利用快取cache來提高響應速度,效能、效率和易用性上都優於soap協議。

rest架構遵循了crud原則,crud原則對於資源只需要四種行為:create(建立)、read(讀取)、update(更新)和delete(刪除)就可以完成對其操作和處理。這四個操作是一種原子操作,即一種無法再分的操作,通過它們可以構造複雜的操作過程,正如數學上四則運算是數字的最基本的運算一樣。

rest架構讓人們真正理解我們的網路協議http本來面貌,對資源的操作包括獲取、建立、修改和刪除資源的操作正好對應http協議提供的get、post、put和delete方法,因此rest把http對乙個url資源的操作限制在get、post、put和delete這四個之內。這種針對網路應用的設計和開發方式,可以降低開發的複雜性,提高系統的可伸縮性。

rest的設計準則

rest架構是針對web應用而設計的,其目的是為了降低開發的複雜性,提高系統的可伸縮性。rest提出了如下設計準則:

網路上的所有事物都被抽象為資源(resource);

每個資源對應乙個唯一的資源識別符號(resource identifier);

通過通用的聯結器介面(generic connector inte***ce)對資源進行操作;

對資源的各種操作不會改變資源識別符號;

所有的操作都是無狀態的(stateless)。

使用rest架構

對於開發人員來說,關心的是如何使用rest架構,這裡我們來簡單談談這個問題。rest不僅僅是一種嶄新的架構,它帶來的更是一種全新的web開發過程中的思維方式:通過url來設計系統結構。rest是一套簡單的設計原則、一種架構風格(或模式),不是一種具體的標準或架構。rest有很多成功的使用案例,著名的delicious和flickr都提供基於rest風格的api使用,客戶端呼叫也極其方便,下面是我用asp寫的乙個很簡單的rest舉例,從中可以看出rest是多麼的簡單易用。

客戶端**:

服務端**:

response.write request.servervariables("request_method")

if (request.servervariables("request_method")="get") then

response.write "do get" + request("do")

elseif (request.servervariables("request_method")="post") then

response.write "do post" + request("do")

elseif (request.servervariables("request_method")="put") then

response.write "do put" + request("do")

elseif (request.servervariables("request_method")="delete") then

response.write "do delete" + request("do")

end if

需要注意的是,iis伺服器預設是不支援asp檔案的put和delete操作,缺省會返回「403 - forbidden」錯誤,因此需要修改iis的設定,修改方法是:管理根據-iis資訊伺服器-**-屬性-主目錄-應用程式配置-配置-對映,選擇asp - 編輯 - 修改為全部動作。

基於REST架構的Web Service設計

先前我曾經介紹過利用apache axis實現基於soap的web service實現技術和相關 總的來說,soap的web service解決方案雖然較為成熟,且安全性較好,但是使用門檻較高,在大併發情況下會有效能問題,在網際網路上使用不太普及,因此並不太適合web 2.0 服務使用,目前大量的w...

基於REST架構的Web Service設計

先前我曾經介紹過利用apache axis 實現基於soap的web service實現技術和相關 總的來說,soap的web service解決方案雖然較為成熟,且安全性較好,但是使用門檻較高,在大併發情況下會有效能問題,在網際網路上使用不太普及,因此並不太適合web 2.0 服務使用,目前大量的...

基於REST架構的Web Service設計

rest的架構設計 rest representational state transfer 是一種輕量級的web service架構風格,其實現和操作明顯比soap和xml rpc更為簡潔,可以完全通過http協議實現,還可以利用快取cache來提高響應速 度,效能 效率和易用性上都優於soap協...