RESTful架構優點:
- 前后端分離,減少流量
- 安全問題集中在接口上,由於接受json格式,防止了注入型等安全問題
- 前端無關化,后端只負責數據處理,前端表現方式可以是任何前端語言(android,ios,html5)
- 前端和后端人員更加專注於各自開發,只需接口文檔便可完成前后端交互,無需過多相互了解
- 服務器性能優化:由於前端是靜態頁面,通過nginx便可獲取,服務器主要壓力放在了接口上
RESTful架構設計原則(不同公司具體細節可能不同):
- 在接口命名時應該用名詞,不應該用動詞,因為通過接口操作到是資源。
- 在url中加入版本號,利於版本迭代管理更加直觀
https://www.rgc.com/v1/
- 對於資源的操作類型應該是通過http動詞表示。
- GET /zoos:列出所有動物園
- POST /zoos:新建一個動物園
- GET /zoos/ID:獲取某個指定動物園的信息
- PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的全部信息)
- DELETE /zoos/ID:刪除某個動物園
- GET /zoos/ID/animals:列出某個指定動物園的所有動物
- DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物
- 排序規則:默認時升序,‘-’為降序;多個排序規則時以逗號間隔組合。使用sort查詢參數限制
GET /tickets?sort=-time,created_at
優先以time倒序顯示,其次以created_at正序顯示 - 限制返回值的字段域:明確指定輸出字段列表,用於控制網絡帶寬和速度。使用fields查詢參數來限制。
GET /tickets?fileds=id,subject,customer_name,time&sort=-time
返回參數列表為id,subject,customer_name,time,並且以time字段倒序顯 - HTTP Method分別對於資源的CURD操作
GET(SELECT):從服務器取出資源(一項或多項)。 POST(CREATE):在服務器新建一個資源。 PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。 PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。 DELETE(DELETE):從服務器刪除資源。
保證 POST,PUT,DELETE,PATCH,GET 操作冪等性。
- 使用SSL(Secure Sockets Layer 安全套接層)
- 參數和url采用蛇行命名方式。如:updated_time
- 服務器請求和返回的數據格式,應該盡量使用JSON,避免使用XML。在 request中的Accept和Response中的Content-Type:application/json
總結:優秀的RESTful接口設計,能夠根據請求的路徑及請求方法就能看出這個接口主要是對具體某個資源進行什么方法的操作以及返回數據的規則等等。
參考資料: