@builder6/services 3.2.1 → 3.2.12

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 (2) hide show
  1. package/README.md +175 -14
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,21 +1,182 @@
1
- # Builder6 Email Module
1
+ # Builder6 Services Module
2
2
 
3
+ Builder6 Services 模块为 Builder6 框架提供通用的 Moleculer 微服务 API 网关。它通过统一的 HTTP 端点允许经过身份验证的管理员动态调用任意 Moleculer 微服务和操作,是 HTTP 客户端与内部 Moleculer 服务网格之间的桥梁。
3
4
 
4
- ## Environment Variables
5
+ ## 功能特性
5
6
 
6
- ```shell
7
- B6_EMAIL_FROM=Steedos <noreply@steedos.com>
8
- B6_EMAIL_HOST=email.xxxx.amazonaws.com
9
- B6_EMAIL_PORT=465
10
- B6_EMAIL_USERNAME=xxxxx
11
- B6_EMAIL_PASSWORD=xxxxx
12
- B6_EMAIL_SECURE=false
13
- B6_EMAIL_DEBUG=true
14
- B6_EMAIL_LOGGER=true
7
+ - **通用服务调用**: 通过 REST API 调用任意 Moleculer 服务和操作
8
+ - **动态路由**: 根据服务名和操作名动态路由请求
9
+ - **参数传递**: 支持查询参数和请求体参数
10
+ - **权限控制**: 所有操作都需要管理员权限保护
11
+ - **微服务集成**: 与 Builder6 的 Moleculer 微服务生态系统无缝集成
12
+ - **灵活调用**: 无需为每个服务创建专门的 HTTP 端点
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ npm install @builder6/services
18
+ ```
19
+
20
+
21
+
22
+ ```bash
23
+ yarn add @builder6/services
24
+ ```
25
+
26
+ ## 主要 API
27
+
28
+ ### 服务调用端点
29
+
30
+ **POST `/api/v6/services/:serviceName/:actionName`**
31
+
32
+ 通过 HTTP 调用任意 Moleculer 服务操作。
33
+
34
+ - `serviceName`: Moleculer 服务名称
35
+ - `actionName`: 服务操作名称
36
+ - 查询参数和请求体都会作为操作参数传递
37
+
38
+ ## 使用示例
39
+
40
+ ### 在 NestJS 应用中集成
41
+
42
+ ```typescript
43
+ import { Module } from '@nestjs/common';
44
+ import { ServicesModule } from '@builder6/services';
45
+
46
+ @Module({
47
+ imports: [ServicesModule],
48
+ })
49
+ export class AppModule {}
15
50
  ```
16
51
 
17
- ## 配置定时发送
52
+ ### 调用 Moleculer 服务
53
+
54
+ 假设有一个名为 `users` 的 Moleculer 服务,包含 `list` 操作:
18
55
 
56
+ ```bash
57
+ # 调用 users.list 操作
58
+ curl -X POST http://localhost:5100/api/v6/services/users/list \
59
+ -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
60
+ -H "Content-Type: application/json" \
61
+ -d '{
62
+ "limit": 10,
63
+ "offset": 0
64
+ }'
19
65
  ```
20
- STEEDOS_CRON_MAILQUEUE_INTERVAL=3000 # 邮件定时器,单位:毫秒
21
- ```
66
+
67
+ ### 调用带查询参数的服务
68
+
69
+ ```bash
70
+ # 使用查询参数
71
+ curl -X POST "http://localhost:5100/api/v6/services/users/get?id=12345" \
72
+ -H "Authorization: Bearer YOUR_ADMIN_TOKEN"
73
+ ```
74
+
75
+ ### 调用数据处理服务
76
+
77
+ ```bash
78
+ # 调用数据转换服务
79
+ curl -X POST http://localhost:5100/api/v6/services/dataprocessor/transform \
80
+ -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
81
+ -H "Content-Type: application/json" \
82
+ -d '{
83
+ "input": "raw data",
84
+ "format": "json"
85
+ }'
86
+ ```
87
+
88
+ ## 架构说明
89
+
90
+ ### MoleculerApiService
91
+
92
+ 核心服务类,继承自 Moleculer 的 `Service` 类:
93
+
94
+ ```typescript
95
+ import { MoleculerApiService } from '@builder6/services';
96
+
97
+ // 服务提供 call() 方法来调用其他服务
98
+ async callService(serviceName: string, actionName: string, params: any) {
99
+ return await this.moleculerApiService.call(
100
+ `${serviceName}.${actionName}`,
101
+ params
102
+ );
103
+ }
104
+ ```
105
+
106
+ ### MoleculerApiController
107
+
108
+ HTTP 控制器,将 REST 请求转换为 Moleculer 服务调用:
109
+
110
+ - 从 URL 路径提取服务名和操作名
111
+ - 合并查询参数和请求体作为服务参数
112
+ - 通过 MoleculerApiService 调用目标服务
113
+ - 返回服务响应给客户端
114
+
115
+ ## 权限控制
116
+
117
+ 所有 API 端点都受 `AdminGuard` 保护,确保只有管理员用户才能通过 HTTP 调用 Moleculer 服务。这提供了一个安全的服务访问层。
118
+
119
+ ## 使用场景
120
+
121
+ ### 1. 后台管理界面
122
+
123
+ 为管理员提供调用后端微服务的能力,无需为每个服务单独创建 HTTP 端点。
124
+
125
+ ### 2. 服务编排
126
+
127
+ 通过 HTTP 接口组合多个微服务调用,实现复杂的业务流程。
128
+
129
+ ### 3. 快速原型开发
130
+
131
+ 快速暴露 Moleculer 服务为 HTTP API,加速原型开发和测试。
132
+
133
+ ### 4. 第三方集成
134
+
135
+ 为外部系统提供标准的 REST API 访问内部微服务的能力。
136
+
137
+ ## 集成的模块
138
+
139
+ - **AuthModule** (from `@builder6/core`): 提供认证和授权功能
140
+ - **MongodbModule** (from `@builder6/core`): 提供数据库访问
141
+ - **ServiceBroker** (from `@builder6/moleculer`): Moleculer 服务代理
142
+
143
+ ## 依赖项
144
+
145
+ ### Peer Dependencies
146
+
147
+ - `@builder6/core`: ^3.0.10 - 核心功能模块
148
+ - `@builder6/moleculer`: ^3.0.10 - Moleculer 微服务框架
149
+ - `@nestjs/common`: ^11.0.0 - NestJS 核心
150
+ - `@nestjs/core`: ^11.0.0 - NestJS 核心
151
+ - `@nestjs/swagger`: ^11.0.7 - API 文档
152
+
153
+ ## 开发
154
+
155
+ ### 构建
156
+
157
+ ```bash
158
+ npm run build
159
+ ```
160
+
161
+ ### 监听模式
162
+
163
+ ```bash
164
+ npm run build:watch
165
+ ```
166
+
167
+ ### 格式化代码
168
+
169
+ ```bash
170
+ npm run format
171
+ ```
172
+
173
+ ## 安全注意事项
174
+
175
+ 1. **仅限管理员访问**: 此模块允许调用任意微服务,必须严格限制为管理员使用
176
+ 2. **参数验证**: 在 Moleculer 服务层进行参数验证,不要信任来自 HTTP 的输入
177
+ 3. **审计日志**: 建议记录所有服务调用以进行审计
178
+ 4. **速率限制**: 考虑在生产环境中添加速率限制
179
+
180
+ ## License
181
+
182
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder6/services",
3
- "version": "3.2.1",
3
+ "version": "3.2.12",
4
4
  "main": "dist/plugin.module.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -21,5 +21,5 @@
21
21
  "publishConfig": {
22
22
  "access": "public"
23
23
  },
24
- "gitHead": "da86657f07eb4bf3124bb090c6bc1b76b2cebeb0"
24
+ "gitHead": "6d6e13fed8d4b3c6de14f84dcb6287c5661ea6f6"
25
25
  }