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.process
  • sdk.clients.candidate
  • sdk.clients.orgUnit
  • sdk.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.Agenthttps.Agent
  • 这可以减少 TCP 握手的开销,提升服务器之间通信的请求延迟。

未来添加(TODO)

  • SDK.constants
  • SDK.express
  • SDK.storage(例如 GCP 桶集成)
0 浏览
Back to Blog

相关文章

阅读更多 »