json-api-mocker 1.2.3 → 1.2.5

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.
Files changed (5) hide show
  1. package/CONFIG.ch.md +322 -305
  2. package/CONFIG.md +304 -271
  3. package/README.ch.md +311 -347
  4. package/README.md +311 -345
  5. package/package.json +2 -2
package/CONFIG.ch.md CHANGED
@@ -1,305 +1,322 @@
1
- # JSON API Mocker 配置指南
2
-
3
- 本文档将帮助你理解和编写 `data.json` 配置文件。
4
-
5
- ## 配置文件结构
6
-
7
- ```json
8
- {
9
- "server": {
10
- "port": 8080,
11
- "baseProxy": "/api"
12
- },
13
- "routes": []
14
- }
15
- ```
16
-
17
- ## 配置项详解
18
-
19
- ### 1. 服务器配置 (server)
20
-
21
- | 字段 | 类型 | 必填 | 默认值 | 说明 |
22
- |------|------|------|--------|------|
23
- | port | number | 否 | 8080 | 服务器端口号 |
24
- | baseProxy | string | 否 | "/api" | API 的基础路径 |
25
-
26
- ### 2. 路由配置 (routes)
27
-
28
- routes 是一个数组,每个元素都是一个路由配置对象:
29
-
30
- ```json
31
- {
32
- "path": "/users",
33
- "methods": {
34
- "get": {},
35
- "post": {},
36
- "put": {},
37
- "delete": {}
38
- }
39
- }
40
- ```
41
-
42
- #### 2.1 路由基础配置
43
-
44
- | 字段 | 类型 | 必填 | 说明 |
45
- |------|------|------|------|
46
- | path | string | 是 | 路由路径,支持参数如 `/users/:id` |
47
- | methods | object | 是 | HTTP 方法配置对象 |
48
-
49
- #### 2.2 方法配置 (methods)
50
-
51
- 每个 HTTP 方法可以包含以下配置:
52
-
53
- | 字段 | 类型 | 必填 | 说明 |
54
- |------|------|------|------|
55
- | type | string | 否 | 响应类型:"array" 或 "object" |
56
- | response | any | 否 | 静态响应数据 |
57
- | mock | object | 否 | Mock.js 配置 |
58
- | pagination | object | 否 | 分页配置 |
59
- | requestSchema | object | 否 | 请求体验证模式 |
60
-
61
- ### 3. Mock 数据配置 (mock)
62
-
63
- ```json
64
- {
65
- "mock": {
66
- "enabled": true,
67
- "total": 100,
68
- "template": {
69
- "id|+1": 1,
70
- "name": "@cname",
71
- "email": "@email"
72
- }
73
- }
74
- }
75
- ```
76
-
77
- | 字段 | 类型 | 必填 | 说明 |
78
- |------|------|------|------|
79
- | enabled | boolean | 是 | 是否启用 mock 数据 |
80
- | total | number | 是 | 生成数据的总条数 |
81
- | template | object | 是 | Mock.js 的数据模板 |
82
-
83
- ### 4. 分页配置 (pagination)
84
-
85
- ```json
86
- {
87
- "pagination": {
88
- "enabled": true,
89
- "pageSize": 10
90
- }
91
- }
92
- ```
93
-
94
- | 字段 | 类型 | 必填 | 默认值 | 说明 |
95
- |------|------|------|--------|------|
96
- | enabled | boolean | 否 | false | 是否启用分页 |
97
- | pageSize | number | 否 | 10 | 每页数据条数 |
98
-
99
- ### 5. 请求验证配置 (requestSchema)
100
-
101
- ```json
102
- {
103
- "requestSchema": {
104
- "name": "string",
105
- "age": "number",
106
- "email": "string"
107
- }
108
- }
109
- ```
110
-
111
- ## Mock.js 模板使用说明
112
-
113
- ### 常用模板示例
114
-
115
- - `@cname` - 生成中文姓名
116
- - `@name` - 生成英文姓名
117
- - `@email` - 生成邮箱地址
118
- - `@datetime` - 生成日期时间
119
- - `@image` - 生成图片链接
120
- - `@city` - 生成城市名
121
- - `@id` - 生成随机 ID
122
- - `@guid` - 生成 GUID
123
- - `@ctitle` - 生成中文标题
124
- - `@cparagraph` - 生成中文段落
125
- - `|+1` - 自增数字
126
-
127
- ## 完整配置示例
128
-
129
- ### 1. 用户管理接口
130
-
131
- ```json
132
- {
133
- "server": {
134
- "port": 8080,
135
- "baseProxy": "/api"
136
- },
137
- "routes": [
138
- {
139
- "path": "/users",
140
- "methods": {
141
- "get": {
142
- "type": "array",
143
- "mock": {
144
- "enabled": true,
145
- "total": 100,
146
- "template": {
147
- "id|+1": 1,
148
- "name": "@cname",
149
- "age|18-60": 1,
150
- "email": "@email",
151
- "address": "@city(true)"
152
- }
153
- },
154
- "pagination": {
155
- "enabled": true,
156
- "pageSize": 10
157
- }
158
- },
159
- "post": {
160
- "requestSchema": {
161
- "name": "string",
162
- "age": "number",
163
- "email": "string"
164
- },
165
- "response": {
166
- "success": true,
167
- "message": "创建成功"
168
- }
169
- }
170
- }
171
- }
172
- ]
173
- }
174
- ```
175
-
176
- ### 2. 文章管理接口(带嵌套数据)
177
-
178
- ```json
179
- {
180
- "path": "/articles",
181
- "methods": {
182
- "get": {
183
- "type": "array",
184
- "mock": {
185
- "enabled": true,
186
- "total": 50,
187
- "template": {
188
- "id|+1": 1,
189
- "title": "@ctitle",
190
- "content": "@cparagraph",
191
- "author": {
192
- "id|+1": 100,
193
- "name": "@cname",
194
- "avatar": "@image('100x100')"
195
- },
196
- "comments|0-10": [{
197
- "id|+1": 1,
198
- "content": "@csentence",
199
- "user": "@cname",
200
- "createTime": "@datetime"
201
- }]
202
- }
203
- }
204
- }
205
- }
206
- }
207
- ```
208
-
209
- ## 使用技巧
210
-
211
- ### 1. 动态路由参数
212
- ```json
213
- {
214
- "path": "/users/:id/posts",
215
- "methods": {
216
- "get": {
217
- "type": "array",
218
- "mock": {
219
- "enabled": true,
220
- "total": 10,
221
- "template": {
222
- "id|+1": 1,
223
- "title": "@ctitle",
224
- "content": "@cparagraph"
225
- }
226
- }
227
- }
228
- }
229
- }
230
- ```
231
-
232
- ### 2. 分页查询
233
- ```bash
234
- # 获取第二页,每页10条数据
235
- curl http://localhost:8080/api/users?page=2&pageSize=10
236
- ```
237
-
238
- ### 3. 数据范围生成
239
- ```json
240
- {
241
- "template": {
242
- "age|18-60": 1, // 生成18-60之间的数字
243
- "score|1-100.1": 1, // 生成1-100之间的浮点数,保留1位小数
244
- "items|1-5": ["item"] // 生成1-5个重复项
245
- }
246
- }
247
- ```
248
-
249
- ## 注意事项
250
-
251
- 1. **路径参数**
252
- - 动态路由参数使用 `:参数名` 格式
253
- - 例如:`/users/:id/posts/:postId`
254
-
255
- 2. **Mock 数据**
256
- - `enabled` 为 `true` 时才会生成 mock 数据
257
- - `template` 中可以使用所有 Mock.js 支持的语法
258
-
259
- 3. **分页**
260
- - 启用分页后,可通过 `?page=1&pageSize=10` 访问分页数据
261
- - 响应头会包含 `X-Total-Count` 表示总数据量
262
-
263
- 4. **数据持久化**
264
- - POST、PUT、DELETE 操作会自动保存到 data.json 文件
265
- - 重启服务器后数据仍然保留
266
-
267
- ## 最佳实践
268
-
269
- 1. **合理使用 Mock 数据**
270
- ```json
271
- {
272
- "mock": {
273
- "enabled": true,
274
- "total": 100,
275
- "template": {
276
- // 使用自增ID避免重复
277
- "id|+1": 1,
278
- // 使用合适的数据类型
279
- "age|18-60": 1
280
- }
281
- }
282
- }
283
- ```
284
-
285
- 2. **适当的分页配置**
286
- ```json
287
- {
288
- "pagination": {
289
- "enabled": true,
290
- "pageSize": 10 // 根据数据量设置合适的页大小
291
- }
292
- }
293
- ```
294
-
295
- 3. **请求验证**
296
- ```json
297
- {
298
- "requestSchema": {
299
- // 确保必要的字段都有类型验证
300
- "name": "string",
301
- "age": "number",
302
- "email": "string"
303
- }
304
- }
305
- ```
1
+ # JSON API Mocker 配置指南
2
+
3
+ 本文档将帮助你理解和编写 `data.json` 配置文件。
4
+
5
+ ## 配置文件结构
6
+
7
+ ```json
8
+ {
9
+ "server": {
10
+ "port": 8080,
11
+ "baseProxy": "/api"
12
+ },
13
+ "routes": []
14
+ }
15
+ ```
16
+
17
+ ## 配置项详解
18
+
19
+ ### 1. 服务器配置 (server)
20
+
21
+ | 字段 | 类型 | 必填 | 默认值 | 说明 |
22
+ |------|------|------|--------|------|
23
+ | port | number | 否 | 8080 | 服务器端口号 |
24
+ | baseProxy | string | 否 | "/api" | API 的基础路径 |
25
+
26
+ ### 2. 路由配置 (routes)
27
+
28
+ routes 是一个数组,每个元素都是一个路由配置对象:
29
+
30
+ ```json
31
+ {
32
+ "path": "/users",
33
+ "methods": {
34
+ "get": {},
35
+ "post": {},
36
+ "put": {},
37
+ "delete": {}
38
+ }
39
+ }
40
+ ```
41
+
42
+ #### 2.1 路由基础配置
43
+
44
+ | 字段 | 类型 | 必填 | 说明 |
45
+ |------|------|------|------|
46
+ | path | string | 是 | 路由路径,支持参数如 `/users/:id` |
47
+ | methods | object | 是 | HTTP 方法配置对象 |
48
+
49
+ #### 2.2 方法配置 (methods)
50
+
51
+ 每个 HTTP 方法可以包含以下配置:
52
+
53
+ | 字段 | 类型 | 必填 | 说明 |
54
+ |------|------|------|------|
55
+ | type | string | 否 | 响应类型:"array" 或 "object" |
56
+ | response | any | 否 | 静态响应数据 |
57
+ | mock | object | 否 | Mock.js 配置 |
58
+ | pagination | object | 否 | 分页配置 |
59
+ | requestSchema | object | 否 | 请求体验证模式 |
60
+
61
+ ### 3. Mock 数据配置 (mock)
62
+
63
+ ```json
64
+ {
65
+ "mock": {
66
+ "enabled": true,
67
+ "total": 100,
68
+ "template": {
69
+ "id|+1": 1,
70
+ "name": "@cname",
71
+ "email": "@email"
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ | 字段 | 类型 | 必填 | 说明 |
78
+ |------|------|------|------|
79
+ | enabled | boolean | 是 | 是否启用 mock 数据 |
80
+ | total | number | 是 | 生成数据的总条数 |
81
+ | template | object | 是 | Mock.js 的数据模板 |
82
+
83
+ ### 4. 分页配置 (pagination)
84
+
85
+ ```json
86
+ {
87
+ "pagination": {
88
+ "enabled": true,
89
+ "pageSize": 10
90
+ }
91
+ }
92
+ ```
93
+
94
+ | 字段 | 类型 | 必填 | 默认值 | 说明 |
95
+ |------|------|------|--------|------|
96
+ | enabled | boolean | 否 | false | 是否启用分页 |
97
+ | pageSize | number | 否 | 10 | 每页数据条数 |
98
+
99
+ ### 5. 请求验证配置 (requestSchema)
100
+
101
+ ```json
102
+ {
103
+ "requestSchema": {
104
+ "name": "string",
105
+ "age": "number",
106
+ "email": "string"
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### 6. 文件上传配置
112
+
113
+ 你可以在 `data.json` 中配置文件上传接口:
114
+
115
+ ```json
116
+ {
117
+ "path": "/upload/avatar",
118
+ "methods": {
119
+ "post": {
120
+ "type": "object",
121
+ "mock": {
122
+ "enabled": true,
123
+ "template": {
124
+ "success": true,
125
+ "message": "上传成功",
126
+ "data": {
127
+ "url": "@image('200x200')",
128
+ "filename": "@string(10).jpg",
129
+ "size": "@integer(1000, 1000000)"
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ ```
137
+
138
+ | 字段 | 类型 | 必填 | 说明 |
139
+ |------|------|------|------|
140
+ | type | string | 是 | 文件上传必须为 "object" |
141
+ | mock.enabled | boolean | 是 | 启用模拟响应 |
142
+ | mock.template | object | 是 | 使用 Mock.js 语法的响应模板 |
143
+
144
+ ## 完整配置示例
145
+
146
+ ### 1. 用户管理接口
147
+
148
+ ```json
149
+ {
150
+ "server": {
151
+ "port": 8080,
152
+ "baseProxy": "/api"
153
+ },
154
+ "routes": [
155
+ {
156
+ "path": "/users",
157
+ "methods": {
158
+ "get": {
159
+ "type": "array",
160
+ "mock": {
161
+ "enabled": true,
162
+ "total": 100,
163
+ "template": {
164
+ "id|+1": 1,
165
+ "name": "@cname",
166
+ "age|18-60": 1,
167
+ "email": "@email",
168
+ "address": "@city(true)"
169
+ }
170
+ },
171
+ "pagination": {
172
+ "enabled": true,
173
+ "pageSize": 10
174
+ }
175
+ },
176
+ "post": {
177
+ "requestSchema": {
178
+ "name": "string",
179
+ "age": "number",
180
+ "email": "string"
181
+ },
182
+ "response": {
183
+ "success": true,
184
+ "message": "创建成功"
185
+ }
186
+ }
187
+ }
188
+ }
189
+ ]
190
+ }
191
+ ```
192
+
193
+ ### 2. 文章管理接口(带嵌套数据)
194
+
195
+ ```json
196
+ {
197
+ "path": "/articles",
198
+ "methods": {
199
+ "get": {
200
+ "type": "array",
201
+ "mock": {
202
+ "enabled": true,
203
+ "total": 50,
204
+ "template": {
205
+ "id|+1": 1,
206
+ "title": "@ctitle",
207
+ "content": "@cparagraph",
208
+ "author": {
209
+ "id|+1": 100,
210
+ "name": "@cname",
211
+ "avatar": "@image('100x100')"
212
+ },
213
+ "comments|0-10": [{
214
+ "id|+1": 1,
215
+ "content": "@csentence",
216
+ "user": "@cname",
217
+ "createTime": "@datetime"
218
+ }]
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ ```
225
+
226
+ ## 使用技巧
227
+
228
+ ### 1. 动态路由参数
229
+ ```json
230
+ {
231
+ "path": "/users/:id/posts",
232
+ "methods": {
233
+ "get": {
234
+ "type": "array",
235
+ "mock": {
236
+ "enabled": true,
237
+ "total": 10,
238
+ "template": {
239
+ "id|+1": 1,
240
+ "title": "@ctitle",
241
+ "content": "@cparagraph"
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+ ```
248
+
249
+ ### 2. 分页查询
250
+ ```bash
251
+ # 获取第二页,每页10条数据
252
+ curl http://localhost:8080/api/users?page=2&pageSize=10
253
+ ```
254
+
255
+ ### 3. 数据范围生成
256
+ ```json
257
+ {
258
+ "template": {
259
+ "age|18-60": 1, // 生成18-60之间的数字
260
+ "score|1-100.1": 1, // 生成1-100之间的浮点数,保留1位小数
261
+ "items|1-5": ["item"] // 生成1-5个重复项
262
+ }
263
+ }
264
+ ```
265
+
266
+ ## 注意事项
267
+
268
+ 1. **路径参数**
269
+ - 动态路由参数使用 `:参数名` 格式
270
+ - 例如:`/users/:id/posts/:postId`
271
+
272
+ 2. **Mock 数据**
273
+ - `enabled` 为 `true` 时才会生成 mock 数据
274
+ - `template` 中可以使用所有 Mock.js 支持的语法
275
+
276
+ 3. **分页**
277
+ - 启用分页后,可通过 `?page=1&pageSize=10` 访问分页数据
278
+ - 响应头会包含 `X-Total-Count` 表示总数据量
279
+
280
+ 4. **数据持久化**
281
+ - POST、PUT、DELETE 操作会自动保存到 data.json 文件
282
+ - 重启服务器后数据仍然保留
283
+
284
+ ## 最佳实践
285
+
286
+ 1. **合理使用 Mock 数据**
287
+ ```json
288
+ {
289
+ "mock": {
290
+ "enabled": true,
291
+ "total": 100,
292
+ "template": {
293
+ // 使用自增ID避免重复
294
+ "id|+1": 1,
295
+ // 使用合适的数据类型
296
+ "age|18-60": 1
297
+ }
298
+ }
299
+ }
300
+ ```
301
+
302
+ 2. **适当的分页配置**
303
+ ```json
304
+ {
305
+ "pagination": {
306
+ "enabled": true,
307
+ "pageSize": 10 // 根据数据量设置合适的页大小
308
+ }
309
+ }
310
+ ```
311
+
312
+ 3. **请求验证**
313
+ ```json
314
+ {
315
+ "requestSchema": {
316
+ // 确保必要的字段都有类型验证
317
+ "name": "string",
318
+ "age": "number",
319
+ "email": "string"
320
+ }
321
+ }
322
+ ```