一个根据 OpenAPI Specification (OAS) 定义自动生成 Next.js API 文件的工具。
- 支持从 URL 或本地文件路径加载 OAS 定义(JSON 或 YAML 格式)
- 自动解析 OAS 组件中的 schemas 为 TypeScript 接口
- 为每个域名接口生成独立的文件夹结构
- 生成符合 Next.js API 路由规范的文件
- 支持动态参数路由(如 [documentId])
- 自动生成 API 类型文档(TYPE.md)
使用 pip 安装:
pip install foldspace-strapi-nextjs-api-generater或者从源码安装:
git clone https://github.com/yishenggudou/foldspace-strapi-nextjs-api-generater.git
cd foldspace-strapi-nextjs-api-generater
pip install -e .- Python 3.7+
- pyyaml
- requests
- jinja2
从本地文件生成 API:
strapi-nextjs-api-generate ./openapi.yaml从 URL 生成 API:
strapi-nextjs-api-generate https://example.com/openapi.json指定输出目录:
strapi-nextjs-api-generate ./openapi.yaml -o ./outputstrapi-nextjs-api-generate --help
usage: strapi-nextjs-api-generate [-h] [-o OUTPUT] [-v] source
根据 OAS 定义生成 Next.js API 文件
positional arguments:
source OAS 文件的 URL 或本地路径
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
输出目录,默认为当前目录
-v, --version show program's version number and exit生成的文件结构示例:
├── channel
│ ├── client.ts # API 客户端实例
│ ├── [documentId]
│ │ └── route.ts # 详情路由(GET/PUT)
│ ├── models.ts # TypeScript 接口定义
│ ├── route.ts # 列表路由(GET/POST)
│ └── TYPE.md # API 类型文档
└── user
├── client.ts
├── [documentId]
│ └── route.ts
├── models.ts
├── route.ts
└── TYPE.md
- client.ts: 封装了与 Strapi SDK 的交互,提供了集合操作方法
- [documentId]/route.ts: 处理单个资源的 GET 和 PUT 请求
- models.ts: 包含从 OAS schemas 生成的 TypeScript 接口定义
- route.ts: 处理资源列表的 GET 和 POST 请求
- TYPE.md: 自动生成的 API 类型文档,包含字段说明
MIT
foldspace-strapi-nextjs-api-generater 由 yishenggudou 编写。