签到成功

知道了

CNDBA社区CNDBA社区

OpenAPI 与 RESTful API 对比说明

2025-10-22 17:31 169 0 转载 大模型
作者: dave

一、RESTful API 概述

RESTful API(Representational State Transfer)是一种基于 HTTP 协议的 Web API 设计风格,强调通过标准的 HTTP 方法对“资源”进行操作。http://www.cndba.cn/dave/article/131758http://www.cndba.cn/dave/article/131758http://www.cndba.cn/dave/article/131758

http://www.cndba.cn/dave/article/131758
http://www.cndba.cn/dave/article/131758

核心概念:

  • 资源(Resource):系统中的对象(如用户、订单),每个资源有唯一 URI(如 /users/1)。
  • 统一接口:使用标准 HTTP 方法操作资源:
    • GET:获取资源
    • POST:创建资源
    • PUT/PATCH:更新资源
    • DELETE:删除资源
  • 无状态:每次请求包含所有必要信息,服务器不保存会话状态。
  • 数据格式:通常使用 JSON 进行数据交换。

✅ 示例:

GET /api/v1/users          → 获取用户列表
POST /api/v1/users         → 创建新用户
GET /api/v1/users/123      → 获取 ID 为 123 的用户
PUT /api/v1/users/123      → 更新用户信息
DELETE /api/v1/users/123   → 删除用户

RESTful API 是一种“设计风格”,它本身不提供工具或文档机制。


二、OpenAPI 概述

OpenAPI(原名 Swagger)是一个开放标准,用于描述和文档化 RESTful API

http://www.cndba.cn/dave/article/131758
http://www.cndba.cn/dave/article/131758
http://www.cndba.cn/dave/article/131758

它提供了一种语言无关的格式(YAML 或 JSON),用来精确描述 API 的结构,相当于 API 的“蓝图”或“合同”。http://www.cndba.cn/dave/article/131758

核心作用:

  • 定义 API 的路径、参数、请求/响应格式、状态码、认证方式等。
  • 支持自动生成交互式文档(如 Swagger UI)。
  • 可用于生成客户端 SDK 或服务端代码
  • 实现 API 的自动化测试与验证

示例片段(OpenAPI 3.0):

openapi: 3.0.3
info:
  title: 用户管理 API
  version: 1.0.0

paths:
  /users:
    get:
      summary: 获取用户列表
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'

components:
  schemas:
    User:
      type: object
      properties:
        id: { type: integer }
        name: { type: string }
        email: { type: string, format: email }

OpenAPI 是对 RESTful API 的标准化描述,让机器和人都能理解 API。


三、OpenAPI 与 RESTful API 的关系

对比项 RESTful API OpenAPI
类型 设计风格 / 架构 描述规范 / 标准
用途 定义如何设计 API 定义如何描述 API
是否可执行 是(运行在服务器上) 否(只是描述文件)
输出 实际的 HTTP 接口 .yaml.json 文件
关系 被描述的对象 描述该对象的语言

类比http://www.cndba.cn/dave/article/131758

  • RESTful API = 一栋房子(实际建筑)
  • OpenAPI = 这栋房子的建筑设计图(蓝图)

四、基于 OpenAPI 的 API 开发过程(推荐流程)

采用 “设计优先”(Design-First) 模式,提升开发效率与协作质量。

📌 开发流程(含工具链)

graph TB
  A[1. 设计 API] --> B[编写 OpenAPI 文件]
  B --> C[使用 Swagger Editor 验证]
  C --> D[2. 生成交互式文档]
  D --> E[使用 Swagger UI / Redoc 展示]
  E --> F[团队评审与前端预研]
  F --> G[3. 生成代码]
  G --> H[用 openapi-generator 生成服务端骨架]
  G --> I[生成前端 SDK]
  H --> J[4. 实现业务逻辑]
  I --> K[前端集成 SDK]
  J --> L[5. 测试与部署]
  K --> L
  L --> M[6. 自动化 CI/CD]
  M --> N[验证变更、检查兼容性]

详细步骤说明

1. 设计 API(契约先行)

  • 使用 openapi.yaml 文件定义所有资源、路径、参数、响应模型。
  • 工具:Swagger Editor(在线编辑 + 实时验证)。

2. 生成文档并评审

  • 使用 Swagger UIRedoc.yaml 文件转为网页文档。
  • 团队(前后端、测试、产品)共同评审接口设计,减少后期变更。

3. 代码生成

  • 服务端:使用 openapi-generator 生成 Controller 模板(支持 Java、Python、Go 等)。
  • 客户端:生成 TypeScript、Java、iOS 等 SDK,确保类型安全。

4. 实现业务逻辑

  • 在生成的代码基础上编写数据库操作、业务规则等。
  • 框架示例:
    • Python: FastAPI(原生支持 OpenAPI)
    • Java: Spring Boot + SpringDoc
    • Node.js: Express + express-openapi

5. 测试与集成

  • 使用 Postman、Insomnia 导入 OpenAPI 文件进行测试。
  • 自动化测试工具可基于 OpenAPI 生成测试用例。

6. 持续集成(CI/CD)

  • 在 CI 流程中:
    • 验证 OpenAPI 文件语法。
    • 检查 API 变更是否破坏兼容性(使用 openapi-diff)。
    • 自动部署文档。

五、两种开发模式对比

模式 设计优先(Design-First) 代码优先(Code-First)
流程 先写 OpenAPI → 再写代码 先写代码 → 自动生成 OpenAPI
优点 设计规范、前后端并行 开发快捷、文档与代码同步
缺点 初期投入大 易出现文档滞后
适用场景 大型项目、团队协作 小型项目、快速原型

六、总结

概念 说明
RESTful API 一种基于 HTTP 的 API 设计风格,强调资源化、无状态、统一接口。
OpenAPI 一种描述 RESTful API 的标准格式,用于生成文档、代码和测试用例。
开发过程 推荐采用“设计优先”模式:设计 → 文档 → 代码生成 → 实现 → 测试 → 部署。
核心价值 提高 API 质量、减少沟通成本、实现自动化、支持多语言集成。

最佳实践建议

  • 使用 OpenAPI 规范来设计和文档化你的 RESTful API。
  • 结合 Swagger UI 提供交互式文档。
  • 在团队中推行“API 契约先行”,提升开发效率与系统稳定性。

通过将 RESTful 设计原则OpenAPI 工具链 结合,可以构建出高质量、可维护、易集成的现代 API 服务体系。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 637
    转载
  • 198
    评论
  • 访问:9392154次
  • 积分:4535
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ