TAC 后端服务内部 SDK
发布: (2026年2月25日 GMT+8 22:44)
3 分钟阅读
原文: Dev.to
Source: Dev.to
概览
此包为 TAC 内部的后端服务提供了标准化、共享的软件开发工具包(SDK)。它集中管理 API 客户端、业务逻辑服务以及通用工具,以促进代码复用和一致性。
安装
从内部包注册表安装此包:
npm install @pwc-me-operate-internal/tac-internal-sdk
创建 SDK 实例
主导出是一个名为 SDK 的工厂类。使用高层配置对象实例化它,它将生成已完全配置、性能优化的 API 客户端和高级服务。
const SDK = require('@pwc-me-operate-internal/tac-internal-sdk');
const sdkConfig = {
// Process 后端 API
process: {
baseURL: process.env.PROCESS_API_BASE_URL,
apiKey: process.env.PROCESS_API_KEY,
},
// Candidate 后端 API
candidate: {
baseURL: process.env.CANDIDATE_API_BASE_URL,
apiKey: process.env.CANDIDATE_API_KEY,
},
// Org Unit(管理员)API
orgUnit: {
baseURL: process.env.ORG_UNIT_API_BASE_URL,
apiKey: process.env.ORG_UNIT_API_KEY,
},
// Legacy SUN API
sun: {
baseURL: process.env.SUN_API_BASE_URL,
subscription_key: process.env.SUN_API_SUBSCRIPTION_KEY,
},
// 可选的数据加密/解密
encryption: {
secret: process.env.ENCRYPTION_SECRET,
iv: process.env.ENCRYPTION_IV,
},
};
const sdk = new SDK(sdkConfig);
服务
服务提供高级业务逻辑并在不同客户端之间编排调用。它们是与 SDK 交互的首选方式。
sdk.process– 与 Process 和 Candidate API 交互。sdk.orgData– 与 Org Unit API 交互,用于获取员工、部门和等级数据。
示例:在 Express 控制器中使用服务
// 在 Express 控制器或服务文件中
class MyController {
constructor(sdk) {
this.sdk = sdk;
}
async getDemands(req, res) {
// 使用 ProcessService 获取需求
const demands = await this.sdk.process.getDemands({ page: 1, limit: 10 });
res.json(demands);
}
async getEmployee(req, res) {
// 使用 OrgDataService 获取员工信息
const employee = await this.sdk.orgData.getEmployeeById(req.params.id);
res.json(employee);
}
}
直接 API 客户端
对于底层调用,你可以访问已配置好的基于 Axios 的客户端:
sdk.clients.processsdk.clients.candidatesdk.clients.orgUnitsdk.clients.sun
示例:通过 Process 客户端进行健康检查
// 直接从 Process API 客户端获取健康检查
const health = await sdk.clients.process.healthCheck();
工具
SDK 包含若干实用模块,作为主导出的静态属性附加。
const { crypto } = SDK.utils;
// 示例:使用 SDK 的加密配置对数据进行加密
const encrypted = crypto.encrypt('secret-data', sdk.encryptionConfig);
性能考虑
SDK 采用最佳实践来提升性能和可维护性:
- 实例化了一个带有
keepAlive: true的共享http.Agent与https.Agent。 - 这可以减少 TCP 握手的开销,提升服务器之间通信的请求延迟。
未来添加(TODO)
SDK.constantsSDK.expressSDK.storage(例如 GCP 桶集成)