一、RESTful架構概述
RESTful是Representational State Transfer的縮寫,即表述性狀態轉移。它是一種基於HTTP協議的網路架構風格,將所有的Web服務抽象為一個資源,通過對資源的描述(如URL)來進行CRUD操作,以達到表示、傳輸狀態。
RESTful風格架構是目前互聯網開發中最常用的架構風格,其核心思想就是將所有的應用操作都看成是對資源執行的單一操作,即HTTP方法(GET, POST, PUT, DELETE)。這種風格能夠極大地提高應用的靈活性和可擴展性,使得服務端和客戶端之間的通信變得簡潔明了。
二、RESTful架構的幾種實現方式
1. 以XML為數據傳輸格式的SOAP
「簡單對象訪問協議」(Simple Object Access Protocol)是一種基於XML的消息交換協議,主要用於分散式應用程序之間的數據交換。
2. 以JSON為數據傳輸格式的REST
「表述性狀態傳遞」(Representational State Transfer)是一種基於HTTP協議的應用程序介面,其數據格式一般使用JSON(JavaScript Object Notation),XML或者HTML。
3. 以二進位數據傳輸的REST
二進位數據的傳輸速度更快,因為二進位數據比文本數據更加緊湊、更加高效。因此,有些情況下我們可以使用二進位數據作為REST的數據傳輸格式,以提高網路傳輸效率。
三、RESTful架構的優點
1. 可擴展性
RESTful架構風格能夠將服務端和客戶端之間的通信變得簡潔明了,使得新的功能和資源能夠更加方便地添加和擴展。
2. 鬆散耦合
RESTful架構使用HTTP協議進行通信,因此客戶端和服務端之間的耦合度較低,其間獨立性較高,能夠更加容易地實現解耦。
3. 易於緩存
RESTful架構風格將所有的Web服務抽象為一個資源,請求一般以HTTP GET方式進行訪問,因此能夠利用HTTP協議的緩存機制,減少伺服器的負載。
四、RESTful架構的特點
1. 客戶端與服務端的分離
RESTful架構風格將客戶端和服務端分離開,使得二者相互獨立,更加易於開發和擴展。
2. 無狀態
RESTful架構採用HTTP協議進行通信,因此不需要保留請求和響應的狀態信息,更加易於實現。
3. 基於標準化的HTTP協議實現
RESTful架構利用HTTP協議進行通信,因此其使用了HTTP中的很多特殊功能,如URI、Header、Cookie等,使得其實現過程更加規範、標準化。
五、RESTful風格介面示例
GET /students HTTP/1.1 200 OK [ {"id":1, "name":"張三", "age":18}, {"id":2, "name":"李四", "age":19}, {"id":3, "name":"王五", "age":20} ]
GET /students/1 HTTP/1.1 200 OK {"id":1, "name":"張三", "age":18}
POST /students Content-Type: application/json { "name": "趙六", "age": 21 }
PUT /students/1 Content-Type: application/json { "name": "張三", "age": 20 }
DELETE /students/1 HTTP/1.1 204 No Content
六、RESTful架構的理解
RESTful架構的核心思想就是將所有的應用操作都看成是對資源執行的單一操作,即HTTP方法(GET, POST, PUT, DELETE)。這種風格能夠極大地提高應用的靈活性和可擴展性,使得服務端和客戶端之間的通信變得簡潔明了。
RESTful架構的優點有很多,最主要的就是可擴展性,使得新的功能和資源能夠更加方便地添加和擴展。其次,RESTful架構使用HTTP協議進行通信,因此客戶端和服務端之間的耦合度較低,其間獨立性較高,能夠更加容易地實現解耦。
七、RESTful架構手冊
1. 盡量使用有意義的URL
URL應該是有意義的,從而使人們更容易地理解它所代表的資源。
2. 使用動詞表明操作類型
使用HTTP方法(GET, POST, PUT, DELETE)表明操作類型,使得使用的URL語義更加清晰和明確。
3. 對於多級別的URL,使用「/」來分割
URL應該採用類似於目錄結構一樣的層次結構,使用「/」來分割,使得其更容易閱讀和理解。
4. 盡量使用名詞而非動詞作為URL的最後一個單詞
HTTP方法已經表明了操作類型,因此URL最後一個單詞應該是名詞,而不是動詞,以便更好地描述資源。
5. 使用HTTP狀態碼錶示操作的結果
HTTP狀態碼能夠非常直觀地反映操作的結果,因此RESTful架構應該充分利用HTTP狀態碼錶示操作的結果。
八、Resolute支架的用法示例
1. 安裝Resolute支架
npm install resolute –save
2. 創建Server
const resolute = require('resolute'); const server = resolute(); server.listen(8080, () => { console.log('Server is running on port 8080'); });
3. 創建路由
server.router.get('/students', (req, res) => { res.send([{"id":1, "name":"張三", "age":18}, {"id":2, "name":"李四", "age":19}, {"id":3, "name":"王五", "age":20}]); }); server.router.get('/students/:id', (req, res) => { res.send({"id": req.params.id, "name":"張三", "age":18}); }); server.router.post('/students', (req, res) => { res.send(req.body); }); server.router.put('/students/:id', (req, res) => { res.send(req.body); }); server.router.delete('/students/:id', (req, res) => { res.sendStatus(204); });
4. 啟動Server
server.listen(8080, () => { console.log('Server is running on port 8080'); });
結語
通過本文的詳細闡述,相信讀者們對RESTful架構有了更深入的理解。RESTful架構是一種基於HTTP協議的網路架構風格,其實現方式有多種,其中以JSON為數據傳輸格式的REST風格最為常見。RESTful架構的優點有很多,其中最主要的就是可擴展性,使得新的功能和資源能夠更加方便地添加和擴展。在實踐中,我們可以使用Resolute支架來實現RESTful風格的介面。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194228.html