koa3-cli 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +39 -0
- package/.npmignore +46 -0
- package/CHANGELOG.md +47 -0
- package/README.md +153 -194
- package/RELEASE.md +159 -0
- package/app/setup.js +39 -32
- package/bin/cli.js +2 -2
- package/config/config.default.js +10 -0
- package/env.example +5 -0
- package/package.json +35 -10
- package/public/docs/docs-content.js +180 -0
- package/public/docs/docs.css +323 -0
- package/public/docs/docs.js +78 -0
- package/public/index.html +7 -3
package/.gitignore
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
npm-debug.log*
|
|
4
|
+
yarn-debug.log*
|
|
5
|
+
yarn-error.log*
|
|
6
|
+
|
|
7
|
+
# Environment variables
|
|
8
|
+
.env
|
|
9
|
+
.env.local
|
|
10
|
+
.env.*.local
|
|
11
|
+
|
|
12
|
+
# Logs
|
|
13
|
+
logs/
|
|
14
|
+
*.log
|
|
15
|
+
|
|
16
|
+
# OS
|
|
17
|
+
.DS_Store
|
|
18
|
+
Thumbs.db
|
|
19
|
+
|
|
20
|
+
# IDE
|
|
21
|
+
.vscode/
|
|
22
|
+
.idea/
|
|
23
|
+
*.swp
|
|
24
|
+
*.swo
|
|
25
|
+
*~
|
|
26
|
+
|
|
27
|
+
# Build
|
|
28
|
+
dist/
|
|
29
|
+
build/
|
|
30
|
+
|
|
31
|
+
# Coverage
|
|
32
|
+
coverage/
|
|
33
|
+
.nyc_output/
|
|
34
|
+
|
|
35
|
+
# Temporary files
|
|
36
|
+
tmp/
|
|
37
|
+
temp/
|
|
38
|
+
/release-dist/
|
|
39
|
+
/release-temp/
|
package/.npmignore
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
npm-debug.log*
|
|
4
|
+
yarn-debug.log*
|
|
5
|
+
yarn-error.log*
|
|
6
|
+
|
|
7
|
+
# Environment variables
|
|
8
|
+
.env
|
|
9
|
+
.env.local
|
|
10
|
+
.env.*.local
|
|
11
|
+
|
|
12
|
+
# Logs
|
|
13
|
+
logs/
|
|
14
|
+
*.log
|
|
15
|
+
|
|
16
|
+
# OS
|
|
17
|
+
.DS_Store
|
|
18
|
+
Thumbs.db
|
|
19
|
+
|
|
20
|
+
# IDE
|
|
21
|
+
.vscode/
|
|
22
|
+
.idea/
|
|
23
|
+
*.swp
|
|
24
|
+
*.swo
|
|
25
|
+
*~
|
|
26
|
+
|
|
27
|
+
# Build
|
|
28
|
+
dist/
|
|
29
|
+
build/
|
|
30
|
+
|
|
31
|
+
# Coverage
|
|
32
|
+
coverage/
|
|
33
|
+
.nyc_output/
|
|
34
|
+
|
|
35
|
+
# Temporary files
|
|
36
|
+
tmp/
|
|
37
|
+
temp/
|
|
38
|
+
release-dist/
|
|
39
|
+
release-temp/
|
|
40
|
+
|
|
41
|
+
# Git
|
|
42
|
+
.git/
|
|
43
|
+
.gitignore
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
docs/
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
所有重要变更都会记录在这里。
|
|
4
|
+
|
|
5
|
+
本项目遵循语义化版本思路:
|
|
6
|
+
|
|
7
|
+
- `MAJOR`:包含不兼容的 CLI、模板或运行时行为变更。
|
|
8
|
+
- `MINOR`:新增向后兼容的能力、模板或工程化设施。
|
|
9
|
+
- `PATCH`:修复问题、依赖补丁、安全修复和文档修正。
|
|
10
|
+
|
|
11
|
+
## 1.1.0 - 2026-06-15
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- 新增 GitHub Pages 文档部署流程,使用 `public/` 目录作为静态文档源。
|
|
16
|
+
- 新增 GitHub Actions CI,覆盖 Node.js `20.18.1` 和 `24`。
|
|
17
|
+
- 新增 CLI 创建项目的自动化测试,验证版本输出、项目目录、关键文件和生成后的 `package.json`。
|
|
18
|
+
- 新增 CORS 配置能力,使用 `@koa/cors`,默认关闭并可通过环境变量开启。
|
|
19
|
+
- 新增 npm 发布白名单,控制发布包内容,避免临时目录和构建产物混入。
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- 将主仓库地址切换为 GitHub,并在 README 首屏补充 npm、CI、License、Node.js badge。
|
|
24
|
+
- 重写 README 首屏定位、快速开始、能力表、分支说明和路线图。
|
|
25
|
+
- 将 `koa-cors` 替换为维护更明确的 `@koa/cors`。
|
|
26
|
+
- 升级核心依赖:`koa`、`@koa/router`、`dotenv`、`joi`。
|
|
27
|
+
- 修复 `package-lock.json` 与 Node.js 24 / 新版 npm 的兼容问题。
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- 修复 GitHub Pages 子路径部署时 CSS / JS 资源路径失效的问题。
|
|
32
|
+
- 修复 npm 发布包包含 `release-temp/`、`release-dist/` 的问题。
|
|
33
|
+
- 修复依赖安全风险,`npm audit` 当前为 0 vulnerabilities。
|
|
34
|
+
- 修复 `package-lock.json` 根版本和 `package.json` 版本不一致的问题。
|
|
35
|
+
|
|
36
|
+
### Branches
|
|
37
|
+
|
|
38
|
+
- `admin` 分支已同步依赖安全治理。
|
|
39
|
+
- `admin` 分支服务端和客户端 audit 均已清零。
|
|
40
|
+
- `admin` 分支客户端升级到 Vite 8,并通过生产构建验证。
|
|
41
|
+
|
|
42
|
+
## 1.0.9 - 2026-06-08
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- 维护 Koa3 CLI 基础脚手架能力。
|
|
47
|
+
- 包含 Koa 3、MVC 分层、多环境配置、日志、参数校验、错误处理和 RESTful 示例。
|
package/README.md
CHANGED
|
@@ -1,289 +1,248 @@
|
|
|
1
1
|
# Koa3 CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/koa3-cli)
|
|
4
|
+
[](https://github.com/hikerw/koa3-cli/actions/workflows/ci.yml)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://nodejs.org/)
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
- 🔗 Gitee 地址:https://gitee.com/wangziwl/koa3-cli
|
|
8
|
+
面向 Koa 3 的现代 Node.js API 项目脚手架。它不是只复制一个空目录,而是把后端项目常见的分层结构、环境配置、日志、错误处理、参数校验和 RESTful 示例先搭好,让你可以更快进入业务开发。
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
- 文档地址:https://hikerw.github.io/koa3-cli/
|
|
11
|
+
- GitHub:https://github.com/hikerw/koa3-cli
|
|
12
|
+
- Gitee:https://gitee.com/wangziwl/koa3-cli
|
|
13
|
+
- npm:https://www.npmjs.com/package/koa3-cli
|
|
14
|
+
- 更新日志:[CHANGELOG.md](./CHANGELOG.md)
|
|
15
|
+
- 发布流程:[RELEASE.md](./RELEASE.md)
|
|
9
16
|
|
|
10
|
-
|
|
17
|
+
## 为什么选择 Koa3 CLI
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
- 基于 Koa 3,适合需要轻量、清晰、可控的 Node.js API 服务。
|
|
20
|
+
- 内置 Controller / Service / Model 分层,避免新项目从第一天就把逻辑堆在路由里。
|
|
21
|
+
- 内置多环境配置,支持 `development`、`local`、`production` 差异化加载。
|
|
22
|
+
- 内置请求日志、错误日志和 `x-request-id`,方便定位线上问题。
|
|
23
|
+
- 内置 Joi 参数校验示例,校验失败统一返回 422。
|
|
24
|
+
- 内置全局错误处理和 404 处理,接口响应行为更一致。
|
|
25
|
+
- 提供 CLI,一条命令创建可运行项目。
|
|
17
26
|
|
|
18
|
-
|
|
19
|
-
npx koa3-cli create my-project
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 使用 CLI 创建项目
|
|
27
|
+
## 30 秒快速开始
|
|
23
28
|
|
|
24
29
|
```bash
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# 进入项目目录
|
|
29
|
-
cd my-project
|
|
30
|
-
|
|
31
|
-
# 安装依赖
|
|
30
|
+
npx koa3-cli create my-api
|
|
31
|
+
cd my-api
|
|
32
32
|
npm install
|
|
33
|
-
|
|
34
|
-
# 启动开发服务器
|
|
35
33
|
npm run dev
|
|
36
34
|
```
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
koa3-cli/
|
|
42
|
-
├── app/ # 应用代码目录
|
|
43
|
-
│ ├── controller/ # 控制器目录
|
|
44
|
-
│ │ ├── home.js # 首页控制器
|
|
45
|
-
│ │ └── user.js # 用户控制器
|
|
46
|
-
│ ├── service/ # 服务层目录
|
|
47
|
-
│ │ └── user.js # 用户服务
|
|
48
|
-
│ ├── model/ # 数据模型目录
|
|
49
|
-
│ │ └── user.js # 用户模型
|
|
50
|
-
│ ├── middleware/ # 中间件目录
|
|
51
|
-
│ │ ├── index.js # 中间件入口
|
|
52
|
-
│ │ ├── auth.js # 认证中间件示例
|
|
53
|
-
│ │ ├── requestLogger.js # 请求日志中间件
|
|
54
|
-
│ │ └── errorHandler.js # 全局错误处理
|
|
55
|
-
│ ├── lib/ # 基础能力目录
|
|
56
|
-
│ │ ├── logger.js # 日志工具
|
|
57
|
-
│ │ └── validator.js # 参数校验中间件(Joi)
|
|
58
|
-
│ ├── schema/ # 参数校验规则目录
|
|
59
|
-
│ │ └── user.js # 用户相关校验规则
|
|
60
|
-
│ └── router.js # 路由配置
|
|
61
|
-
├── config/ # 配置文件目录
|
|
62
|
-
│ ├── config.default.js # 默认配置
|
|
63
|
-
│ ├── config.local.js # 本地开发配置
|
|
64
|
-
│ └── config.prod.js # 生产环境配置
|
|
65
|
-
├── logs/ # 日志输出目录(运行时自动创建)
|
|
66
|
-
├── public/ # 静态资源目录
|
|
67
|
-
│ └── index.html # 首页
|
|
68
|
-
├── app.js # 应用入口文件
|
|
69
|
-
├── package.json # 项目配置
|
|
70
|
-
└── README.md # 项目说明
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## 特性
|
|
36
|
+
启动后访问:
|
|
74
37
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
- ✅ 支持多环境配置(development/production)
|
|
79
|
-
- ✅ MVC 架构(Controller/Service/Model)
|
|
80
|
-
- ✅ 中间件支持
|
|
81
|
-
- ✅ 统一的错误处理(校验失败返回 422,message 为第一条校验提示)
|
|
82
|
-
- ✅ 内置日志系统(访问日志、错误日志、请求追踪)
|
|
83
|
-
- ✅ 基于 Joi 的参数校验(body/query/params,校验结果挂到 `ctx.state.validated`)
|
|
84
|
-
- ✅ RESTful API 示例
|
|
38
|
+
- 首页:http://localhost:3000
|
|
39
|
+
- API 示例:http://localhost:3000/api/user
|
|
40
|
+
- 本地文档:http://localhost:3000/index.html
|
|
85
41
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### 安装依赖
|
|
42
|
+
也可以全局安装:
|
|
89
43
|
|
|
90
44
|
```bash
|
|
91
|
-
npm install
|
|
92
|
-
|
|
45
|
+
npm install -g koa3-cli
|
|
46
|
+
koa3-cli create my-api
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 当前能力
|
|
50
|
+
|
|
51
|
+
| 能力 | 说明 |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| Koa 3 | 使用 Koa 3 作为核心 Web 框架 |
|
|
54
|
+
| 路由 | 使用 `@koa/router` 管理 API 路由 |
|
|
55
|
+
| 分层结构 | 默认拆分 `controller`、`service`、`model`、`middleware`、`lib` |
|
|
56
|
+
| 环境配置 | 通过 `config.default.js`、`config.local.js`、`config.prod.js` 管理环境差异 |
|
|
57
|
+
| 日志 | 支持控制台日志、文件日志、访问日志、错误日志 |
|
|
58
|
+
| 请求追踪 | 自动生成或透传 `x-request-id` |
|
|
59
|
+
| CORS | 使用 `@koa/cors`,默认关闭,可通过配置显式开启 |
|
|
60
|
+
| 参数校验 | 使用 Joi 校验 `body`、`query`、`params` |
|
|
61
|
+
| 错误处理 | 统一处理业务异常、校验异常和未知异常 |
|
|
62
|
+
| 静态资源 | 内置 `public` 静态目录和文档页 |
|
|
63
|
+
| 自动化测试 | 使用 `node:test` 覆盖 CLI 创建项目关键路径 |
|
|
64
|
+
| CI | 使用 GitHub Actions 自动运行测试和 npm 打包检查 |
|
|
93
65
|
|
|
94
|
-
|
|
66
|
+
## 项目结构
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
koa3-cli/
|
|
70
|
+
├── app/ # 应用代码目录
|
|
71
|
+
│ ├── controller/ # 控制器:处理请求输入输出
|
|
72
|
+
│ │ ├── home.js
|
|
73
|
+
│ │ └── user.js
|
|
74
|
+
│ ├── service/ # 服务层:承载业务逻辑
|
|
75
|
+
│ │ └── user.js
|
|
76
|
+
│ ├── model/ # 模型层:描述数据结构或数据访问
|
|
77
|
+
│ │ └── user.js
|
|
78
|
+
│ ├── middleware/ # 中间件
|
|
79
|
+
│ │ ├── auth.js
|
|
80
|
+
│ │ ├── errorHandler.js
|
|
81
|
+
│ │ ├── index.js
|
|
82
|
+
│ │ ├── notFound.js
|
|
83
|
+
│ │ └── requestLogger.js
|
|
84
|
+
│ ├── lib/ # 基础工具
|
|
85
|
+
│ │ ├── logger.js
|
|
86
|
+
│ │ └── validator.js
|
|
87
|
+
│ ├── processEvents.js # 进程异常事件处理
|
|
88
|
+
│ ├── router.js # 路由入口
|
|
89
|
+
│ └── setup.js # 应用装配入口
|
|
90
|
+
├── config/ # 多环境配置
|
|
91
|
+
│ ├── config.default.js
|
|
92
|
+
│ ├── config.local.js
|
|
93
|
+
│ ├── config.prod.js
|
|
94
|
+
│ └── loader.js
|
|
95
|
+
├── public/ # 静态资源和本地文档
|
|
96
|
+
├── bin/cli.js # CLI 入口
|
|
97
|
+
├── app.js # 应用启动入口
|
|
98
|
+
├── env.example # 环境变量示例
|
|
99
|
+
└── package.json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 常用命令
|
|
95
103
|
|
|
96
|
-
开发环境(使用 nodemon 自动重启):
|
|
97
104
|
```bash
|
|
105
|
+
# 启动开发环境
|
|
98
106
|
npm run dev
|
|
99
|
-
```
|
|
100
107
|
|
|
101
|
-
|
|
102
|
-
```bash
|
|
108
|
+
# 启动生产环境
|
|
103
109
|
npm start
|
|
104
|
-
```
|
|
105
110
|
|
|
106
|
-
|
|
111
|
+
# 查看 CLI 帮助
|
|
112
|
+
npx koa3-cli --help
|
|
107
113
|
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
114
|
+
# 查看 CLI 版本
|
|
115
|
+
npx koa3-cli --version
|
|
116
|
+
```
|
|
111
117
|
|
|
112
118
|
## 环境配置
|
|
113
119
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
- `development` 或 `local`: 加载 `config.local.js`
|
|
117
|
-
- `production`: 加载 `config.prod.js`
|
|
118
|
-
- 默认: 加载 `config.default.js`
|
|
120
|
+
项目通过 `NODE_ENV` 控制配置加载:
|
|
119
121
|
|
|
120
|
-
|
|
122
|
+
- `development` 或 `local`:加载 `config.local.js`
|
|
123
|
+
- `production`:加载 `config.prod.js`
|
|
124
|
+
- 其他情况:加载 `config.default.js`
|
|
121
125
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
日志系统默认开启控制台和文件输出,支持 4 个级别:`debug`、`info`、`warn`、`error`。
|
|
125
|
-
|
|
126
|
-
`.env` 可配置项:
|
|
126
|
+
可以复制 `env.example` 为 `.env` 后按需修改:
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
+
PORT=3000
|
|
130
|
+
NODE_ENV=development
|
|
129
131
|
LOG_LEVEL=info
|
|
130
132
|
LOG_DIR=logs
|
|
131
133
|
LOG_ENABLE_CONSOLE=true
|
|
132
134
|
LOG_ENABLE_FILE=true
|
|
135
|
+
CORS_ENABLE=false
|
|
136
|
+
CORS_ORIGIN=*
|
|
133
137
|
```
|
|
134
138
|
|
|
135
|
-
|
|
139
|
+
## 日志与请求追踪
|
|
140
|
+
|
|
141
|
+
日志系统默认支持 4 个级别:`debug`、`info`、`warn`、`error`。运行后会在日志目录按天生成文件:
|
|
136
142
|
|
|
137
|
-
- `<date>.log
|
|
138
|
-
- `<date>.access.log
|
|
139
|
-
- `<date>.error.log
|
|
143
|
+
- `<date>.log`:应用日志
|
|
144
|
+
- `<date>.access.log`:访问日志,采用 JSON 行格式
|
|
145
|
+
- `<date>.error.log`:错误日志
|
|
140
146
|
|
|
141
|
-
|
|
147
|
+
请求日志中间件会处理 `x-request-id`:
|
|
142
148
|
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
149
|
+
- 请求头已有 `x-request-id` 时,服务端会透传并写入日志。
|
|
150
|
+
- 请求头没有 `x-request-id` 时,服务端会自动生成并写入响应头。
|
|
151
|
+
- 错误日志会带上 `requestId`,方便串联一次请求的完整链路。
|
|
146
152
|
|
|
147
153
|
## 参数校验
|
|
148
154
|
|
|
149
|
-
|
|
155
|
+
项目内置 `app/lib/validator.js`,提供两种使用方式:
|
|
150
156
|
|
|
151
|
-
|
|
157
|
+
```javascript
|
|
158
|
+
const { Joi, validate, validateValue } = require('../lib/validator');
|
|
159
|
+
```
|
|
152
160
|
|
|
153
|
-
|
|
161
|
+
### 在路由中使用中间件
|
|
154
162
|
|
|
155
163
|
```javascript
|
|
156
|
-
const { validate } = require('./lib/validator');
|
|
157
|
-
const userSchema = require('./schema/user');
|
|
164
|
+
const { validate, Joi } = require('./lib/validator');
|
|
158
165
|
|
|
159
|
-
|
|
160
|
-
|
|
166
|
+
const createUserBody = Joi.object({
|
|
167
|
+
name: Joi.string().trim().min(1).max(100).required(),
|
|
168
|
+
email: Joi.string().email().allow('').optional()
|
|
169
|
+
});
|
|
161
170
|
|
|
162
|
-
|
|
163
|
-
router.post('/api/user', validate({ body: userSchema.createUserBody }), userController.create);
|
|
164
|
-
|
|
165
|
-
// 同时校验 params + body
|
|
166
|
-
router.put('/api/user/:id', validate({
|
|
167
|
-
params: userSchema.idParam,
|
|
168
|
-
body: userSchema.updateUserBody
|
|
169
|
-
}), userController.update);
|
|
171
|
+
router.post('/api/user', validate({ body: createUserBody }), userController.create);
|
|
170
172
|
```
|
|
171
173
|
|
|
172
|
-
|
|
174
|
+
校验通过后,结果会挂到 `ctx.state.validated`:
|
|
175
|
+
|
|
176
|
+
- `ctx.state.validated.body`
|
|
177
|
+
- `ctx.state.validated.query`
|
|
178
|
+
- `ctx.state.validated.params`
|
|
173
179
|
|
|
174
|
-
|
|
175
|
-
- `ctx.state.validated.query`:校验后的 query
|
|
176
|
-
- `ctx.state.validated.params`:校验后的 params
|
|
180
|
+
### 在控制器中校验单个对象
|
|
177
181
|
|
|
178
|
-
|
|
182
|
+
当前用户示例在 `app/controller/user.js` 中使用 `validateValue()`,适合把校验规则放在控制器附近,便于小项目快速阅读和维护。
|
|
179
183
|
|
|
180
|
-
|
|
184
|
+
```javascript
|
|
185
|
+
const userData = await validateValue(createUserBodySchema, ctx.request.body);
|
|
186
|
+
```
|
|
181
187
|
|
|
182
|
-
|
|
188
|
+
校验失败时会返回 422:
|
|
183
189
|
|
|
184
190
|
```json
|
|
185
191
|
{
|
|
186
192
|
"success": false,
|
|
187
193
|
"message": "用户名为必填",
|
|
188
194
|
"errors": [
|
|
189
|
-
{
|
|
195
|
+
{
|
|
196
|
+
"field": "name",
|
|
197
|
+
"message": "用户名为必填"
|
|
198
|
+
}
|
|
190
199
|
]
|
|
191
200
|
}
|
|
192
201
|
```
|
|
193
202
|
|
|
194
|
-
### 添加新的校验规则
|
|
195
|
-
|
|
196
|
-
在 `app/schema/` 下新增或修改 schema 文件,使用 Joi 定义规则(支持 `.messages()` 自定义提示),在路由中通过 `validate({ body: xxx })` 等引用即可。详见 `app/schema/user.js`。
|
|
197
|
-
|
|
198
203
|
## API 示例
|
|
199
204
|
|
|
200
|
-
### 获取用户列表
|
|
201
205
|
```bash
|
|
206
|
+
# 获取用户列表
|
|
202
207
|
GET /api/user
|
|
203
|
-
```
|
|
204
208
|
|
|
205
|
-
|
|
206
|
-
```bash
|
|
209
|
+
# 获取用户详情
|
|
207
210
|
GET /api/user/:id
|
|
208
|
-
```
|
|
209
211
|
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
+
# 创建用户
|
|
212
213
|
POST /api/user
|
|
213
214
|
Content-Type: application/json
|
|
214
215
|
|
|
215
216
|
{
|
|
216
217
|
"name": "张三",
|
|
217
|
-
"email": "zhangsan@example.com"
|
|
218
|
+
"email": "zhangsan@example.com",
|
|
219
|
+
"age": 18
|
|
218
220
|
}
|
|
219
|
-
```
|
|
220
221
|
|
|
221
|
-
|
|
222
|
-
```bash
|
|
222
|
+
# 更新用户
|
|
223
223
|
PUT /api/user/:id
|
|
224
224
|
Content-Type: application/json
|
|
225
225
|
|
|
226
226
|
{
|
|
227
|
-
"name": "李四"
|
|
228
|
-
"email": "lisi@example.com"
|
|
227
|
+
"name": "李四"
|
|
229
228
|
}
|
|
230
|
-
```
|
|
231
229
|
|
|
232
|
-
|
|
233
|
-
```bash
|
|
230
|
+
# 删除用户
|
|
234
231
|
DELETE /api/user/:id
|
|
235
232
|
```
|
|
236
233
|
|
|
237
|
-
##
|
|
238
|
-
|
|
239
|
-
### 添加新的控制器
|
|
240
|
-
|
|
241
|
-
1. 在 `app/controller/` 目录下创建控制器文件
|
|
242
|
-
2. 在 `app/router.js` 中注册路由
|
|
243
|
-
|
|
244
|
-
示例:
|
|
245
|
-
```javascript
|
|
246
|
-
// app/controller/product.js
|
|
247
|
-
class ProductController {
|
|
248
|
-
async list(ctx) {
|
|
249
|
-
ctx.body = await productService.getList();
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
module.exports = new ProductController();
|
|
253
|
-
|
|
254
|
-
// app/router.js
|
|
255
|
-
const productController = require('./controller/product');
|
|
256
|
-
router.get('/api/product', productController.list);
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### 添加新的服务
|
|
260
|
-
|
|
261
|
-
在 `app/service/` 目录下创建服务文件,处理业务逻辑。
|
|
262
|
-
|
|
263
|
-
### 添加新的模型
|
|
264
|
-
|
|
265
|
-
在 `app/model/` 目录下创建模型文件,处理数据访问。
|
|
266
|
-
|
|
267
|
-
### 添加中间件
|
|
268
|
-
|
|
269
|
-
在 `app/middleware/` 目录下创建中间件文件,然后在 `app/middleware/index.js` 中引入使用。
|
|
270
|
-
|
|
271
|
-
### 添加参数校验
|
|
234
|
+
## 分支说明
|
|
272
235
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
3. 在控制器中从 `ctx.state.validated` 读取已校验数据
|
|
236
|
+
- `master`:稳定的 Koa 3 API 脚手架,适合作为 npm 默认模板和开源首屏展示。
|
|
237
|
+
- `admin`:后台管理方向的功能分支,包含登录鉴权、菜单、角色、权限、素材管理、系统配置和 Vue 管理端等能力,适合继续打磨成进阶模板。
|
|
276
238
|
|
|
277
|
-
##
|
|
239
|
+
## 后续路线
|
|
278
240
|
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
- **koa-static**: 静态资源服务
|
|
284
|
-
- **koa-views**: 模板引擎支持
|
|
285
|
-
- **dotenv**: 环境变量管理
|
|
241
|
+
- 扩展 CLI 创建项目后的启动测试和接口冒烟测试。
|
|
242
|
+
- 增加 TypeScript 模板。
|
|
243
|
+
- 将 `admin` 分支能力整理为可选模板,例如 `koa3-cli create my-api --template admin`。
|
|
244
|
+
- 增加 `add controller/service/route` 等代码生成命令。
|
|
286
245
|
|
|
287
246
|
## 许可证
|
|
288
247
|
|
|
289
|
-
MIT
|
|
248
|
+
[MIT](./LICENSE)
|