OpenSpec 使用指南

概述

OpenSpec 是一个用于处理 OpenAPI 规范的工具套件,提供 CLI 命令来创建、验证、生成和维护 API 文档。

目录


OpenSpec Init 作用

主要功能

  1. 创建初始模板
  2. 生成标准的 OpenAPI/Swagger 规范文件
  3. 提供预定义的项目结构和基础配置

  4. 项目脚手架 bash openspec init my-api 创建的项目结构: my-api/ ├── openapi.yaml # 主要的 API 规范文件 ├── package.json # 项目配置 └── README.md # 项目文档

  5. 规范标准化

  6. 确保生成的 API 规范符合 OpenAPI 标准
  7. 包含必要的字段和结构(info、paths、components 等)

  8. 快速启动开发

  9. 减少手动创建规范文件的时间
  10. 避免格式错误和遗漏

使用场景

  • 开始新的 API 项目
  • 为现有 API 创建规范文档
  • 团队统一 API 开发规范
  • 集成到 CI/CD 流程中

OpenSpec 主要功能

核心功能模块

1. 规范管理

  • 初始化项目openspec init
  • 验证规范openspec validate
  • 规范转换:YAML ↔ JSON 格式转换

2. 代码生成

# 生成客户端代码
openspec generate client --language typescript

# 生成服务器端代码
openspec generate server --language nodejs

# 生成 API 文档
openspec generate docs

3. 文档相关

  • 静态文档生成:HTML、Markdown 等格式
  • 实时预览:本地服务器实时查看
  • 文档导出:多格式导出支持

4. Mock 服务

# 启动 Mock 服务器
openspec mock --port 3000
  • 根据 OpenAPI 规范模拟 API 响应
  • 用于前端开发测试

工作流程示例

开发阶段

# 1. 初始化项目
openspec init my-project

# 2. 编辑 openapi.yaml
# 3. 验证规范
openspec validate openapi.yaml

# 4. 启动 Mock 服务测试
openspec mock openapi.yaml

生产阶段

# 生成客户端 SDK
openspec generate client --language javascript

# 生成 API 文档网站
openspec generate docs --output ./docs

主要优势

  1. 标准化:统一 API 开发规范
  2. 效率提升:自动化生成代码和文档
  3. 一致性:保持设计、文档、实现一致
  4. 协作友好:便于团队协同开发

文档维护流程

1. 初始化文档项目

# 创建新的 API 文档项目
openspec init my-api-docs
cd my-api-docs

# 或为现有项目初始化
openspec init --existing

2. 实时文档预览

# 启动实时预览服务器
openspec serve openapi.yaml --port 3000

# watch 模式,文件更改自动刷新
openspec serve openapi.yaml --watch

3. 规范验证

# 检查 OpenAPI 规范正确性
openspec validate openapi.yaml

# 严格模式验证
openspec validate openapi.yaml --strict

4. 文档生成与导出

# 生成 HTML 文档
openspec generate docs openapi.yaml --output ./dist

# 生成多格式文档
openspec generate docs openapi.yaml --format html,md,json

# 自定义主题
openspec generate docs openapi.yaml --theme redoc

5. 版本化文档管理

# 为不同版本生成文档
openspec generate docs openapi.v1.yaml --output ./docs/v1
openspec generate docs openapi.v2.yaml --output ./docs/v2

6. API 更新维护

# openapi.yaml - 维护变更历史
info:
  title: User API
  version: 1.2.0
  description: |
    # 变更日志

    ## v1.2.0 (2024-01-15)
    - 新增用户头像上传接口
    - 修复分页参数验证问题

    ## v1.1.0 (2024-01-10)
    - 添加用户搜索功能

7. 批量操作

# 批量验证多个文件
openspec validate ./specs/*.yaml

# 批量生成文档
openspec generate docs ./specs/ --output ./build/docs

8. 自动化检查脚本

#!/bin/bash
echo "验证 OpenAPI 规范..."
openspec validate openapi.yaml

echo "生成文档..."
openspec generate docs openapi.yaml --output ./docs

echo "文档检查完成!"

9. CI/CD 集成示例

# .github/workflows/docs.yml
name: API Docs Maintenance
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  validate-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Validate OpenAPI Spec
        run: |
          npm install -g openspec
          openspec validate openapi.yaml

      - name: Generate Docs
        run: |
          openspec generate docs openapi.yaml --output ./public/docs

      - name: Deploy Docs
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public/docs

最佳实践

项目结构组织

my-api/
├── openapi/
│   ├── openapi.yaml          # 主文件
│   ├── paths/                # 接口路径拆分
│   │   ├── users.yaml
│   │   └── products.yaml
│   └── components/           # 组件拆分
│       ├── schemas.yaml
│       └── parameters.yaml
├── docs/                     # 生成的文档
└── scripts/
    └── build-docs.sh         # 文档构建脚本

文档维护脚本

#!/bin/bash
# scripts/build-docs.sh

echo "🔄 开始更新 API 文档..."

# 验证规范
if ! openspec validate openapi.yaml; then
    echo "❌ OpenAPI 规范验证失败"
    exit 1
fi

# 生成文档
openspec generate docs openapi.yaml \
    --output ./docs \
    --theme redoc \
    --title "My API Documentation"

# 检查生成结果
if [ -d "./docs" ]; then
    echo "✅ 文档生成成功"
    echo "📁 文档位置: ./docs/index.html"
else
    echo "❌ 文档生成失败"
    exit 1
fi

变更管理

# 文档版本对比
openspec diff openapi.v1.yaml openapi.v2.yaml

# 生成变更报告
openspec generate changelog openapi.yaml --output CHANGELOG.md

维护技巧

  1. 定期验证:每次修改后运行 openspec validate
  2. 实时预览:开发时使用 openspec serve --watch
  3. 版本控制:为每个 API 版本维护独立的文档
  4. 自动化部署:集成到 CI/CD 流程自动发布更新
  5. 团队协作:建立文档更新和审查流程

常见命令速查

命令 功能 示例
openspec init 初始化项目 openspec init my-api
openspec validate 验证规范 openspec validate openapi.yaml
openspec generate docs 生成文档 openspec generate docs --output ./docs
openspec serve 启动预览服务器 openspec serve --port 3000 --watch
openspec mock 启动 Mock 服务 openspec mock --port 8080
openspec diff 对比版本差异 openspec diff v1.yaml v2.yaml
openspec generate client 生成客户端代码 openspec generate client --language typescript

应用场景

典型应用

  • API 优先开发:先定义接口规范,再实现代码
  • 微服务架构:管理多个服务的 API 规范
  • 团队协作:统一团队的 API 设计标准
  • 文档维护:保持代码与文档的同步更新

适用团队

  • 需要遵循 OpenAPI 规范的开发团队
  • 追求 API 设计一致性的团队
  • 需要自动化生成文档和代码的团队
  • 实施微服务架构的组织

文档更新时间:2024年1月
OpenSpec 版本:最新稳定版