RESTful是什么

在程序猿DD Spring Boot基礎(chǔ)教程的開山篇《基礎(chǔ)項(xiàng)目構(gòu)建,引入Web模塊,完成一個(gè)簡單的RESTful API》中,RESTful?是什么呢?

那么先百度一下:一種軟件構(gòu)架風(fēng)格,設(shè)計(jì)風(fēng)格而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件?;谶@個(gè)風(fēng)格設(shè)計(jì)的軟件可以更加簡潔,更有層次,更用以實(shí)現(xiàn)緩存等機(jī)制。

是不是一頭霧水,百度百科中對REST以及RESTful有非常理論的介紹,不過雖然耐著性子看完了,仍然不知所云。好在知乎有《怎樣用通俗的語言解釋REST,以及RESTful?》。

那么本文將對答者的回答自行梳理一下:

????要了解REST,首先需要了解API(Application Programming Interface,應(yīng)用程序編程接口)。什么是API呢?首先它的定義是一個(gè)接口,舉個(gè)形象的例子來說,就是一個(gè)公司比如騰訊,他們對自己項(xiàng)目封裝,提供一個(gè)API,然后我們或者一些小公司可以通過這些API,對封裝的這個(gè)項(xiàng)目進(jìn)行交互。通過這個(gè)渠道打到我們的目的。

????了解了API,那么REST是什么呢?他是一種構(gòu)架風(fēng)格,騰訊這類公司要遵循這種風(fēng)格建立API。那么REST的具體風(fēng)格是什么呢?REST(Representational State Transfer)(表現(xiàn)層狀態(tài)轉(zhuǎn)移)。又是一頭霧水,什么是表現(xiàn)層狀態(tài)轉(zhuǎn)移呢?

????這里我們要了解一下Web,因?yàn)镽EST是基于Web應(yīng)用的。Web:分布式信息系統(tǒng)為超文本文件和其他對象(資源)提供訪問入口。資源是Web構(gòu)架的關(guān)鍵點(diǎn),當(dāng)資源與Web交互時(shí),它需要3個(gè)操作,識別(identify),表示(represent),交互(interact with),通過這三個(gè)操作,又引入了3個(gè)概念uri(統(tǒng)一資源標(biāo)識符包括url和urn)識別資源;representation(例如html,xml,視頻,圖片)表示資源;通過協(xié)議(包括http,ftp等)與資源進(jìn)行交互。

??如果我們想將一個(gè)資源文件顯現(xiàn)出來,就要通過uri進(jìn)行暴露。uri的設(shè)計(jì)只是負(fù)責(zé)把資源通過合理的方式暴露出來。對資源沒有任何操作,操作是通過http動(dòng)詞來實(shí)現(xiàn)的,所以REST通過URI暴露資源時(shí),會(huì)強(qiáng)調(diào)不要再URI中出現(xiàn)動(dòng)詞。

??比如:左邊的是錯(cuò)誤的設(shè)計(jì),右邊的是正確的

GET???? /rest/api/getDogs????——> GET?????/rest/api/dogs????? 獲取所有的小狗

GET????/rest/api/addDogs????——> POST????????/rest/api/dogs??????添加一個(gè)小狗

GET????/rest/api/editDogs/:dog_id????——>????PUT????/rest/api/dogs/:dog_id????修改一個(gè)小狗

GET????/rest/api/deleteDogs/:dog_id????——>????DELETE????/rest/api/dogs/:dog_id????刪除一個(gè)小狗

左邊的這種設(shè)計(jì),不符合REST風(fēng)格,uri只負(fù)責(zé)準(zhǔn)確無誤的暴露資源,而getDogs、addDogs已經(jīng)包含了對資源的操作,這是不對的。而右邊是通過具體的Http動(dòng)詞來體現(xiàn)。所以很容易理解REST很好利用了HTTP本來的特性,而不是只是將HTTP作為傳輸層這么簡單。

總結(jié)一下:URL定位資源,用HTTP動(dòng)詞(GET,POST,DELETE,DETC)描述操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一說到REST,我想大家的第一反應(yīng)就是“啊,就是那種前后臺通信方式。”但是在要求詳細(xì)講述它所提出的各個(gè)約束,以及如...
    時(shí)待吾閱讀 3,601評論 0 19
  • 從今天開始,我開始學(xué)習(xí)Retrofit,整體Retrofit內(nèi)容如下: 1、Retrofit解析1之前哨站——理解...
    隔壁老李頭閱讀 6,302評論 4 46
  • 解釋一 REST -- REpresentational State Transfer 直接翻譯:表現(xiàn)層狀態(tài)轉(zhuǎn)移。...
    時(shí)間之友閱讀 2,332評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,597評論 19 139
  • 前言 這將是一個(gè)系列的博文,這個(gè)系列將介紹一個(gè)iPhone軟件項(xiàng)目中遇到的各種坑以及我們的解決方案,其中包括:架構(gòu)...
    SeeLee閱讀 1,080評論 1 6

友情鏈接更多精彩內(nèi)容