您好,登录后才能下订单哦!
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。