一、rest思想 此部分摘抄網(wǎng)絡(luò) REST(Representational State Transfer)是一種輕量級(jí)的Web Service架構(gòu)風(fēng)格,,其實(shí)現(xiàn)和操作明顯比SOAP和XML-RPC更為簡(jiǎn)潔,,可以完全通過(guò)HTTP協(xié)議實(shí)現(xiàn),還可以利用緩存Cache來(lái)提高響應(yīng)速度,,性能,、效率和易用性上都優(yōu)于SOAP協(xié)議。 REST架構(gòu)遵循了CRUD原則,,CRUD原則對(duì)于資源只需要四種行為:Create(創(chuàng)建),、Read(讀取),、Update(更新)和Delete(刪除)就可以完成對(duì)其操作和處理,。這四個(gè)操作是一種原子操作,即一種無(wú)法再分的操作,,通過(guò)它們可以構(gòu)造復(fù)雜的操作過(guò)程,,正如數(shù)學(xué)上四則運(yùn)算是數(shù)字的最基本的運(yùn)算一樣,。 REST架構(gòu)讓人們真正理解我們的網(wǎng)絡(luò)協(xié)議HTTP本來(lái)面貌,對(duì)資源的操作包括獲取,、創(chuàng)建,、修改和刪除資源的操作正好對(duì)應(yīng)HTTP協(xié)議提供的GET、POST,、PUT和DELETE方法: 1) 使用HTTP POST方法去創(chuàng)建 資源 2) 使用HTTP GET方法去讀取 資源 3) 使用HTTP PUT 方法去更新 資源 4) 使用HTTP DELETE方法去刪除 資源 因此REST把HTTP對(duì)一個(gè)URL資源的操作限制在GET,、POST、PUT和DELETE這四個(gè)之內(nèi),。這種針對(duì)網(wǎng)絡(luò)應(yīng)用的設(shè)計(jì)和開(kāi)發(fā)方式,,可以降低開(kāi)發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性,。 REST的設(shè)計(jì)準(zhǔn)則 REST架構(gòu)是針對(duì)Web應(yīng)用而設(shè)計(jì)的,其目的是為了降低開(kāi)發(fā)的復(fù)雜性,,提高系統(tǒng)的可伸縮性,。REST提出了如下設(shè)計(jì)準(zhǔn)則: 網(wǎng)絡(luò)上的所有事物都被抽象為資源(resource); 每個(gè)資源對(duì)應(yīng)一個(gè)唯一的資源標(biāo)識(shí)符(resource identifier),; 通過(guò)通用的連接器接口(generic connector interface)對(duì)資源進(jìn)行操作,; 采用通用的連接器接口HTTP。 對(duì)資源的各種操作不會(huì)改變資源標(biāo)識(shí)符,; 所有的操作都是無(wú)狀態(tài)的(stateless),。 客戶端發(fā)送的請(qǐng)求中包含足夠多的信息讓服務(wù)器理解此次請(qǐng)求,而服務(wù)器端不保存上下文信息,,只負(fù)責(zé)提供resource以及操作resource的服務(wù),,而client要根據(jù)resource中的data和representation自己做render,這就減少了服務(wù)器的開(kāi)銷(xiāo),。 使用REST架構(gòu) 對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),,關(guān)心的是如何使用REST架構(gòu),這里我們來(lái)簡(jiǎn)單談?wù)勥@個(gè)問(wèn)題,。REST不僅僅是一種嶄新的架構(gòu),,它帶來(lái)的更是一種全新的Web開(kāi)發(fā)過(guò)程中的思維方式:通過(guò)URL來(lái)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)。REST是一套簡(jiǎn)單的設(shè)計(jì)原則,、一種架構(gòu)風(fēng)格(或模式),,不是一種具體的標(biāo)準(zhǔn)或架構(gòu)。REST有很多成功的使用案例,,著名的Delicious和Flickr都提供基于REST風(fēng)格的API使用,,客戶端調(diào)用也極其方便。 二,、設(shè)計(jì)合理的API
三,、API的安全控制
四,、Rest的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
=======================華麗的分割線===========================
|
|
來(lái)自: 李副營(yíng)長(zhǎng) > 《springMVC》