RESTful
-
Representation State Trandfer
-
表现层状态转义
-
如何设计Web API ,让URL、HTTP方法、状态码等各司其职的规范/风格
-
核心思想:
-
一切可以被操作的东西,都可以看成资源 (Resource)
-
eg:
用户 User 商品 Product 订单 Order 文章 Article 评论 Comment-
对应URL
/users /products /orders /articles /comments -
具体某个资源
/users/1001 /products/2001 /orders/3001/users/1001----->"ID为1001的用户这个资源" ,操作 由HTTP Method决定
-
-
核心:HTTP Method
Method 含义 常见操作 GET 获取 查询 POST 创建 新增 PUT 更新 整体更新 PATCH 部分更新 修改部分字段 DELETE 删除 删除 -
核心架构
RESTful API
│
┌───────────┴───────────┐
│ │
资源 操作
Resource Method
│ │
/users GET → 查询
/products POST → 创建
/orders PUT → 更新
PATCH → 部分更新
DELETE → 删除
│
↓
HTTP Status Code
│
┌────┼─────┐
↓ ↓ ↓
200 201 404
成功 创建 不存在
RESTful = 用 URL 表示资源,用 HTTP Method 表示操作,用 HTTP Status Code 表示结果。
-
复杂业务----->设计成**"动作型API"**
订单 │ ├── 查询 → GET /orders/1001 ├── 修改 → PUT /orders/1001 ├── 删除 → DELETE /orders/1001 │ ├── 支付 → POST /orders/1001/pay ├── 取消 → POST /orders/1001/cancel ├── 退款 → POST /orders/1001/refund └── 确认收货 → POST /orders/1001/confirm
RESTful和HTTP的关系
REST
│
API设计思想/风格
│
↓
HTTP
│
┌─────────┼─────────┐
↓ ↓ ↓
URL Method Status Code
│ │ │
/users GET 200
/users/1 POST 201
PUT 404
DELETE 500
HTTP
-
浏览器(客户端)与服务器之间的通信协议
| 内容 | HTTP 负责 |
|---|---|
| 请求方式(GET、POST...) | ✅ |
| URL | ✅ |
| 请求头(Header) | ✅ |
| 请求体(Body) | ✅ |
| 响应体(Response) | ✅ |
| 状态码(200、404...) | ✅ |
- HTTP解决的是"数据怎么传"
RESTful
-
不是协议,而是一种API设计思想,如何合理的使用HTTP
HTTP
↓
提供 GET、POST、PUT、DELETE、状态码、Header、Body......
↓
RESTful
↓
利用这些 HTTP 能力,把 API 设计成
"URL 表示资源 + Method 表示操作"
API设计风格:通信双方(客户端&服务器)的数据格式约定
登录:

-
客户端--->用户名+密码---->服务器
-
GET login?name=cjj&passwd=123----->不安全
-
POST /login
-
-
服务器---->登录成功/失败-->客户端
RestFul风格的API设计:
-
使用POST/DELETE/PUT/GET 表示资源 的增删改查
-
使用path 表示要操作的资源
-
使用json/xml系列化格式对正文进行序列化
json序列化方式:一种简单的独立于语言的数据交换格式
-
数据类型:
JSON 类型 示例 说明 String(字符串) "hello"必须用双引号 Number(数字) 123、3.14整数、小数都属于 Number Boolean(布尔) true、false只有这两个值 Null(空值) null表示没有值 Object(对象) {"name":"Tom","age":20}键值对集合 Array(数组) ["Java","Python","Go"]有序数据集合