RESTful详解:核心思想、框架、与HTTP的区别,API的设计风格

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"] 有序数据集合
相关推荐
打工仔折腾 AI28 分钟前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
独泪了无痕9 小时前
Spring Data Redis 快速上手
spring boot·redis·后端
青瓦梦滋9 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
m0_6399069413 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
holly就是我13 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
鸿蒙开发13 小时前
共享 Schema 与 SchemaFactory
前端·后端·harmonyos
用户7884773163413 小时前
小程序后端三选一:云开发、.NET WebAPI、Node,我按客户现状分了三种答案
后端
aiopencode13 小时前
局域网设备抓包怎么做?用 TraceEagle 抓电视、游戏机和 IoT 流量
后端·ios
智驭未来掌门人13 小时前
CLion 开发 Qt 项目的优势
后端
EnCi Zheng14 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api