# REST基礎概念有哪些
## 1. 什么是REST
REST(Representational State Transfer,表述性狀態轉移)是一種**軟件架構風格**,由Roy Fielding博士在2000年的博士論文中首次提出。它基于HTTP協議設計,主要用于構建分布式系統和Web服務。REST不是標準,而是一組設計原則和約束條件。
核心特點:
- 以資源為中心
- 無狀態通信
- 標準HTTP方法
- 可緩存性
- 統一接口
## 2. 核心概念
### 2.1 資源(Resource)
REST的核心抽象概念,可以是:
- 物理實體(用戶、產品)
- 虛擬對象(訂單、交易)
- 服務(天氣服務、支付服務)
每個資源通過**URI(統一資源標識符)**唯一標識:
/users/123 /products/1001
### 2.2 表現層(Representation)
資源的具體表現形式,常見格式:
- JSON(最常用)
```json
{
"id": 123,
"name": "張三"
}
<user>
<id>123</id>
<name>張三</name>
</user>
通過HTTP方法實現資源狀態變更:
| HTTP方法 | 語義 | 冪等性 | 安全性 |
|---|---|---|---|
| GET | 獲取資源 | 是 | 是 |
| POST | 創建資源 | 否 | 否 |
| PUT | 更新完整資源 | 是 | 否 |
| PATCH | 部分更新 | 否 | 否 |
| DELETE | 刪除資源 | 是 | 否 |
每個請求必須包含處理所需的所有信息,服務器不保存客戶端狀態。優勢: - 提高可擴展性 - 簡化服務器設計 - 便于緩存
包含四個子原則: 1. 資源標識(URI) 2. 通過表現層操作資源 3. 自描述消息(Content-Type等頭部) 4. 超媒體作為應用狀態引擎(HATEOAS)
典型分層:
客戶端 → 負載均衡 → 應用服務器 → 數據庫
優勢: - 提高可維護性 - 支持水平擴展 - 增強安全性
通過HTTP緩存控制:
Cache-Control: max-age=3600
ETag: "33a64df5"
可選原則,通過傳輸可執行代碼擴展功能(如JavaScript)。
/users ?
/getUsers ?
/users/123/orders
常見方式: - URI路徑
/api/v1/users
Accept: application/vnd.company.api.v1+json
標準HTTP狀態碼: - 200 OK - 400 Bad Request - 401 Unauthorized - 404 Not Found - 500 Internal Server Error
錯誤響應示例:
{
"error": {
"code": "invalid_param",
"message": "用戶名不能為空"
}
}
REST通過簡單的設計原則構建了高效的分布式系統架構。理解其核心概念(資源、表現層、狀態轉移)和設計約束(無狀態、統一接口等)是設計良好RESTful API的基礎。在實際開發中,應結合業務需求靈活應用這些原則,而非機械遵循。
擴展閱讀:
- Roy Fielding的博士論文《Architectural Styles and the Design of Network-based Software Architectures》
- HTTP/1.1規范(RFC 7230-7235)
- OpenAPI規范(原Swagger) “`
(注:實際字數為約850字,可通過擴展示例或增加實踐部分達到1000字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。