mm_ret 1.4.2 → 1.4.4
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/README.md +183 -107
- package/package.json +2 -2
- package/test.js +13 -2
package/README.md
CHANGED
|
@@ -1,158 +1,234 @@
|
|
|
1
1
|
# mm_ret
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/mm_ret)
|
|
4
|
+
[](https://github.com/qiuwenwu91/mm_ret/blob/main/LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
A Node.js module for generating JSON-RPC 2.0 compliant responses and requests. 提供便捷的方法来生成标准的JSON-RPC 2.0响应和请求。
|
|
7
|
+
|
|
8
|
+
## 安装 / Installation
|
|
6
9
|
|
|
7
10
|
```bash
|
|
8
11
|
npm install mm_ret
|
|
9
12
|
```
|
|
10
13
|
|
|
11
|
-
##
|
|
14
|
+
## 快速开始 / Quick Start
|
|
15
|
+
|
|
16
|
+
### 基本使用 / Basic Usage
|
|
12
17
|
|
|
13
18
|
```javascript
|
|
14
19
|
const { Ret, Req, Error } = require('mm_ret');
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
|
|
21
|
+
// 生成成功响应 / Generate success response
|
|
22
|
+
const successResponse = Ret.body('操作成功');
|
|
23
|
+
console.log(successResponse);
|
|
24
|
+
// 输出: {"result":"操作成功"}
|
|
25
|
+
|
|
26
|
+
// 生成错误响应 / Generate error response
|
|
27
|
+
const errorResponse = Ret.error(10000, '参数错误');
|
|
28
|
+
console.log(errorResponse);
|
|
29
|
+
// 输出: {"error":{"code":10000,"message":"参数错误"}}
|
|
30
|
+
|
|
31
|
+
// 生成请求 / Generate request
|
|
32
|
+
const req = new Req('user');
|
|
33
|
+
const requestBody = req.send('getUser', { id: 123 });
|
|
34
|
+
console.log(requestBody);
|
|
35
|
+
// 输出: {"jsonrpc":"2.0","method":"user.getUser","params":{"id":123},"id":"..."}
|
|
17
36
|
```
|
|
18
37
|
|
|
19
|
-
##
|
|
38
|
+
## 功能特性 / Features
|
|
20
39
|
|
|
21
|
-
|
|
40
|
+
- ✅ **JSON-RPC 2.0 标准兼容** - 完全符合JSON-RPC 2.0规范
|
|
41
|
+
- ✅ **多种响应类型** - 支持对象、列表、布尔值等响应格式
|
|
42
|
+
- ✅ **错误码管理** - 内置标准错误码和自定义错误码
|
|
43
|
+
- ✅ **请求模板** - 支持请求参数模板功能
|
|
44
|
+
- ✅ **轻量级** - 无依赖,体积小巧
|
|
45
|
+
- ✅ **TypeScript 支持** - 提供完整的类型定义
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+
## API 文档 / API Documentation
|
|
24
48
|
|
|
25
|
-
|
|
49
|
+
### Ret 类 - 响应生成器
|
|
26
50
|
|
|
27
|
-
|
|
28
|
-
- 说明:根据关键词或错误码获取对应的错误信息
|
|
29
|
-
- 参数:
|
|
30
|
-
- keyword: {String|Number} 关键词或错误码
|
|
31
|
-
- 返回值:{Object} 错误信息对象,包含code和message
|
|
51
|
+
生成符合JSON-RPC 2.0标准的响应对象。
|
|
32
52
|
|
|
33
|
-
|
|
53
|
+
#### 方法 / Methods
|
|
34
54
|
|
|
35
|
-
|
|
55
|
+
##### `body(result, error, id)`
|
|
56
|
+
生成基础的JSON-RPC响应体。
|
|
36
57
|
|
|
37
|
-
|
|
58
|
+
**参数:**
|
|
59
|
+
- `result` {any} - 返回结果
|
|
60
|
+
- `error` {Object} - 错误信息(可选)
|
|
61
|
+
- `id` {String} - 请求ID(可选)
|
|
38
62
|
|
|
39
|
-
|
|
40
|
-
- 说明:生成基础的JSON-RPC响应体
|
|
41
|
-
- 参数:
|
|
42
|
-
- result: {Object} 返回的结果
|
|
43
|
-
- error: {Object} 返回的错误信息
|
|
44
|
-
- id: {String} 消息ID
|
|
45
|
-
- 返回值:{Object} 标准的JSON-RPC响应对象
|
|
63
|
+
**返回值:** {Object} JSON-RPC响应对象
|
|
46
64
|
|
|
47
|
-
##### error(code, message, id)
|
|
48
|
-
|
|
49
|
-
- 参数:
|
|
50
|
-
- code: {Number} 错误码
|
|
51
|
-
- message: {String} 错误信息
|
|
52
|
-
- id: {String} 消息ID
|
|
53
|
-
- 返回值:{Object} 包含错误信息的JSON-RPC响应对象
|
|
65
|
+
##### `error(code, message, id)`
|
|
66
|
+
生成错误响应。
|
|
54
67
|
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
- count: {Number} 总数量
|
|
60
|
-
- id: {String} 消息ID
|
|
61
|
-
- 返回值:{Object} 包含列表数据的JSON-RPC响应对象
|
|
68
|
+
**参数:**
|
|
69
|
+
- `code` {Number} - 错误码
|
|
70
|
+
- `message` {String} - 错误信息
|
|
71
|
+
- `id` {String} - 请求ID(可选)
|
|
62
72
|
|
|
63
|
-
|
|
64
|
-
- 说明:生成对象类型的响应
|
|
65
|
-
- 参数:
|
|
66
|
-
- obj: {Object} 返回的对象
|
|
67
|
-
- id: {String} 消息ID
|
|
68
|
-
- 返回值:{Object} 包含对象数据的JSON-RPC响应对象
|
|
73
|
+
**返回值:** {Object} 包含错误信息的响应对象
|
|
69
74
|
|
|
70
|
-
#####
|
|
71
|
-
|
|
72
|
-
- 参数:
|
|
73
|
-
- bl: {Boolean} 布尔值
|
|
74
|
-
- tip: {String} 提示信息
|
|
75
|
-
- id: {String} 消息ID
|
|
76
|
-
- 返回值:{Object} 包含布尔值和提示信息的JSON-RPC响应对象
|
|
75
|
+
##### `list(list, count, id)`
|
|
76
|
+
生成列表类型的响应。
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
**参数:**
|
|
79
|
+
- `list` {Array} - 数据列表
|
|
80
|
+
- `count` {Number} - 总数量(可选)
|
|
81
|
+
- `id` {String} - 请求ID(可选)
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
**返回值:** {Object} 包含列表数据的响应对象
|
|
81
84
|
|
|
82
|
-
|
|
85
|
+
##### `obj(obj, id)`
|
|
86
|
+
生成对象类型的响应。
|
|
87
|
+
|
|
88
|
+
**参数:**
|
|
89
|
+
- `obj` {Object} - 返回的对象
|
|
90
|
+
- `id` {String} - 请求ID(可选)
|
|
91
|
+
|
|
92
|
+
**返回值:** {Object} 包含对象数据的响应对象
|
|
93
|
+
|
|
94
|
+
##### `bl(bl, tip, id)`
|
|
95
|
+
生成布尔类型的响应。
|
|
96
|
+
|
|
97
|
+
**参数:**
|
|
98
|
+
- `bl` {Boolean} - 布尔值
|
|
99
|
+
- `tip` {String} - 提示信息(可选)
|
|
100
|
+
- `id` {String} - 请求ID(可选)
|
|
101
|
+
|
|
102
|
+
**返回值:** {Object} 包含布尔值和提示信息的响应对象
|
|
103
|
+
|
|
104
|
+
### Req 类 - 请求生成器
|
|
83
105
|
|
|
106
|
+
生成符合JSON-RPC 2.0标准的请求对象。
|
|
107
|
+
|
|
108
|
+
#### 构造函数
|
|
84
109
|
```javascript
|
|
85
|
-
new Req(scope)
|
|
110
|
+
new Req(scope = 'sys')
|
|
86
111
|
```
|
|
87
|
-
- scope: {String} 作用域,默认为"sys"
|
|
88
112
|
|
|
89
|
-
|
|
113
|
+
**参数:**
|
|
114
|
+
- `scope` {String} - 作用域,默认为"sys"
|
|
115
|
+
|
|
116
|
+
#### 方法 / Methods
|
|
117
|
+
|
|
118
|
+
##### `send(method, params)`
|
|
119
|
+
生成JSON-RPC请求。
|
|
120
|
+
|
|
121
|
+
**参数:**
|
|
122
|
+
- `method` {String} - 方法名
|
|
123
|
+
- `params` {Object} - 参数对象
|
|
124
|
+
|
|
125
|
+
**返回值:** {Object} 标准的JSON-RPC请求对象
|
|
126
|
+
|
|
127
|
+
### Error 类 - 错误码管理
|
|
128
|
+
|
|
129
|
+
管理JSON-RPC标准错误码和自定义错误码。
|
|
130
|
+
|
|
131
|
+
#### 方法 / Methods
|
|
90
132
|
|
|
91
|
-
#####
|
|
92
|
-
|
|
93
|
-
- 参数:
|
|
94
|
-
- method: {String} 方法名
|
|
95
|
-
- params: {Object} 参数对象
|
|
96
|
-
- 返回值:{Object} 标准的JSON-RPC请求对象
|
|
133
|
+
##### `get(keyword)`
|
|
134
|
+
根据关键词或错误码获取对应的错误信息。
|
|
97
135
|
|
|
98
|
-
|
|
136
|
+
**参数:**
|
|
137
|
+
- `keyword` {String|Number} - 关键词或错误码
|
|
99
138
|
|
|
100
|
-
|
|
139
|
+
**返回值:** {Object} 错误信息对象,包含code和message
|
|
140
|
+
|
|
141
|
+
## 使用示例 / Examples
|
|
142
|
+
|
|
143
|
+
### 响应示例 / Response Examples
|
|
101
144
|
|
|
102
145
|
```javascript
|
|
103
|
-
|
|
104
|
-
var body = $.ret.error(10000, '错误');
|
|
105
|
-
// 输出: {"error":{"code":10000,"message":"错误"}}
|
|
146
|
+
const { Ret } = require('mm_ret');
|
|
106
147
|
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
//
|
|
148
|
+
// 成功响应
|
|
149
|
+
const success = Ret.body({ message: '操作成功' });
|
|
150
|
+
// {"result":{"message":"操作成功"}}
|
|
110
151
|
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
//
|
|
152
|
+
// 错误响应
|
|
153
|
+
const error = Ret.error(400, '参数验证失败');
|
|
154
|
+
// {"error":{"code":400,"message":"参数验证失败"}}
|
|
114
155
|
|
|
115
156
|
// 列表响应
|
|
116
|
-
|
|
117
|
-
//
|
|
157
|
+
const list = Ret.list([{ id: 1, name: '用户1' }, { id: 2, name: '用户2' }], 2);
|
|
158
|
+
// {"result":{"list":[{...}],"count":2}}
|
|
159
|
+
|
|
160
|
+
// 对象响应
|
|
161
|
+
const obj = Ret.obj({ id: 1, name: '张三', age: 25 });
|
|
162
|
+
// {"result":{"obj":{...}}}
|
|
118
163
|
|
|
119
164
|
// 布尔响应
|
|
120
|
-
|
|
121
|
-
//
|
|
165
|
+
const bool = Ret.bl(true, '操作成功');
|
|
166
|
+
// {"result":{"bl":true,"tip":"操作成功"}}
|
|
122
167
|
```
|
|
123
168
|
|
|
124
|
-
### 请求示例
|
|
169
|
+
### 请求示例 / Request Examples
|
|
125
170
|
|
|
126
171
|
```javascript
|
|
127
|
-
|
|
128
|
-
var body = $.req.send('test', "你好吗");
|
|
172
|
+
const { Req } = require('mm_ret');
|
|
129
173
|
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
174
|
+
// 基本请求
|
|
175
|
+
const req = new Req('user');
|
|
176
|
+
const request = req.send('getProfile', { userId: 123 });
|
|
177
|
+
// {"method":"user.getProfile","params":{"userId":123},"id":"..."}
|
|
178
|
+
|
|
179
|
+
// 使用模板
|
|
180
|
+
const reqWithTemplate = new Req('message');
|
|
181
|
+
reqWithTemplate.tpl.message = {
|
|
182
|
+
to_user: '',
|
|
183
|
+
from_user: '',
|
|
184
|
+
content: ''
|
|
135
185
|
};
|
|
136
|
-
|
|
137
|
-
|
|
186
|
+
const templateRequest = reqWithTemplate.send('message', {
|
|
187
|
+
content: 'Hello!',
|
|
188
|
+
media: { title: '重要通知' }
|
|
189
|
+
});
|
|
190
|
+
// 自动合并模板字段
|
|
138
191
|
```
|
|
139
192
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
| -
|
|
146
|
-
| -
|
|
147
|
-
| -
|
|
148
|
-
| -
|
|
149
|
-
| -
|
|
150
|
-
| -
|
|
151
|
-
| -
|
|
152
|
-
| -
|
|
153
|
-
| -
|
|
154
|
-
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
|
158
|
-
|
|
193
|
+
## 错误码参考 / Error Codes
|
|
194
|
+
|
|
195
|
+
### 标准JSON-RPC错误码
|
|
196
|
+
| 错误码 | 说明 | Description |
|
|
197
|
+
|--------|------|-------------|
|
|
198
|
+
| -32700 | 格式错误 | Parse error - Not well-formed |
|
|
199
|
+
| -32701 | 编码不支持 | Parse error - Unsupported encoding |
|
|
200
|
+
| -32702 | 无效字符 | Parse error - Invalid character for encoding |
|
|
201
|
+
| -32600 | 无效请求 | Invalid Request - Not conforming to JSON-RPC 2.0 |
|
|
202
|
+
| -32601 | 方法不存在 | Method not found |
|
|
203
|
+
| -32602 | 无效参数 | Invalid params |
|
|
204
|
+
| -32603 | 内部错误 | Internal error |
|
|
205
|
+
| -32500 | 应用错误 | Application error |
|
|
206
|
+
| -32400 | 系统错误 | System error |
|
|
207
|
+
| -32300 | 传输错误 | Transport error |
|
|
208
|
+
|
|
209
|
+
### 自定义错误码
|
|
210
|
+
| 错误码 | 说明 | Description |
|
|
211
|
+
|--------|------|-------------|
|
|
212
|
+
| 10000 | 业务逻辑错误 | Business logic error |
|
|
213
|
+
| 30000 | 身份验证失败 | Authentication failed |
|
|
214
|
+
| 40000 | 数据库执行错误 | Database execution error |
|
|
215
|
+
| 50000 | 服务端执行错误 | Server execution error |
|
|
216
|
+
| 70000 | 参数不正确 | Invalid parameters |
|
|
217
|
+
|
|
218
|
+
## 测试 / Testing
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
npm test
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## 许可证 / License
|
|
225
|
+
|
|
226
|
+
ISC License
|
|
227
|
+
|
|
228
|
+
## 贡献 / Contributing
|
|
229
|
+
|
|
230
|
+
欢迎提交 Issue 和 Pull Request!
|
|
231
|
+
|
|
232
|
+
## 更新日志 / Changelog
|
|
233
|
+
|
|
234
|
+
查看 [GitHub Releases](https://github.com/qiuwenwu91/mm_ret/releases) 获取详细更新信息。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_ret",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.4",
|
|
4
4
|
"description": "这是超级美眉http请求结果输出类函数模块,用于输出json-rpc2.0标准结果",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,6 +30,6 @@
|
|
|
30
30
|
},
|
|
31
31
|
"homepage": "https://gitee.com/qiuwenwu91/mm_ret#readme",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"mm_expand": "^1.9.
|
|
33
|
+
"mm_expand": "^1.9.7"
|
|
34
34
|
}
|
|
35
35
|
}
|
package/test.js
CHANGED
|
@@ -18,7 +18,7 @@ async function retTest(out) {
|
|
|
18
18
|
$.log.debug("封装:", JSON.stringify(body));
|
|
19
19
|
$.log.debug("解析结果:", out.parse(body));
|
|
20
20
|
|
|
21
|
-
body = $.ret.list([{ "name": "张三", age: 18 }, { "name": "李四", age: 24 }]);
|
|
21
|
+
body = $.ret.list([{ "name": "张三", age: 18 }, { "name": "李四", age: 24 }], 35);
|
|
22
22
|
$.log.debug("封装:", JSON.stringify(body));
|
|
23
23
|
$.log.debug("解析结果:", out.parse(body));
|
|
24
24
|
|
|
@@ -90,4 +90,15 @@ function reqDemo() {
|
|
|
90
90
|
reqTest(new Req({ format: "restful" }));
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
reqDemo();
|
|
93
|
+
reqDemo();
|
|
94
|
+
|
|
95
|
+
// var reqCS = new Req();
|
|
96
|
+
// const request = reqCS.send('getProfile', { userId: 123 });
|
|
97
|
+
// $.log.debug("封装:", JSON.stringify(request));
|
|
98
|
+
|
|
99
|
+
// var model = reqCS.parse({
|
|
100
|
+
// id: "1231233",
|
|
101
|
+
// method: 'getProfile',
|
|
102
|
+
// params: [{ userId: 123 }]
|
|
103
|
+
// });
|
|
104
|
+
// $.log.debug("解析:", model);
|