康特尼多斯塔布拉
A. 总 则
@fiado/api-invoker 自由行动联盟 微服务公司 (原始内容存档于2018-09-26). Dentro del Ecosistema Fiado. 支持者:
- 客户端 HTTP 提示 (原始内容存档于2013-10-12) (英语). Invocar APIs privadas de otros Lambdas
- 出版商 SQS 中位数colas
- 依附区 翻译 JS
- 行政委员会 错误的描述和行为
普罗波西托语Name
(原始内容存档于2019-09-25) (英语). En una arquitectura de microservicios, cada Lambda expone una API privada ccessible únicamente desde la VPC. Esta librería 封口:
- LA URLs 基础构造
- 《HTTP报》
- 系列/有效载荷设计
- " 公民权利 " 组织
阿基特克图拉
┌─────────────────────────────────────────────────────────────────────────┐
│ LAMBDA CONSUMIDOR │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Manager/ │───▶│ @fiado/ │───▶│ @fiado/ │ │
│ │ Service │ │ api-invoker │ │ http-client │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │ │ │
└───────────────────────────────────┼────────────────────────┼────────────┘
│ │
┌───────────────┴───────────────┐ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐
│ AWS SQS │ │ API Gateway │
│ (Queues) │ │ (Private VPC) │
└──────────────┘ └──────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ Lambda │ │ Lambda │
│ Subscriber │ │ Target │
└──────────────┘ └──────────────────┘
帕特罗内斯·德·通卡西翁
| 帕特龙 | 执行 | 乌苏 |
| 锡克罗诺 | HTTP 通过 API 网关 privado | CRUD 协商 |
| 阿斯克罗诺 | SQS 出版商 | 事件、通知、批次 |
起义组织
npm install @fiado/api-invoker @fiado/http-client
同伴依赖关系
自由报务公司:
{
"@fiado/http-client": "^1.0.7",
"@fiado/logger": "^1.0.3",
"@fiado/type-kit": "^2.1.28",
"inversify": "^6.2.2",
"reflect-metadata": "^0.2.2"
}
配置
IoC连接器上的Registro
自由出口a un ContainerModule dnversify JS que registra automáticamente todos los clientes API y 出版商:
import { Container } from "inversify";
import { IHttpRequest, AxiosHttpRequest } from "@fiado/http-client";
import { apiInvokerBindings } from "@fiado/api-invoker";
const container = new Container();
// 1. Cargar bindings de api-invoker (registra todos los clientes)
container.load(apiInvokerBindings);
// 2. Registrar el cliente HTTP (requerido por los clientes API)
container.bind<IHttpRequest>("IHttpRequest").to(AxiosHttpRequest);
export { container };
界面进口公司
// Importar interfaces específicas
import {
IDirectoryApi,
IIdentityApi,
ITransactionApi,
INotificationMessagesPublisher
} from "@fiado/api-invoker";
APIs 责任
人民解放组织 60+ 微服务 菲亚多生态主义:
塞尔维西奥斯核心
| 接口 | 德克赖普西翁 | 环境变量 |
IDirectoryApi | 用益主任 | DIRECTORY_LAMBDA_URL |
IIdentityApi | 身份认证 | IDENTITY_LAMBDA_URL |
IAuthenticationApi | 音响和符号 | AUTHENTICATION_LAMBDA_URL |
ITransactionApi | 过境方案 | TRANSACTION_LAMBDA_URL |
塞维西奥斯·德昆塔
| 接口 | 德克赖普西翁 | 环境变量 |
IAccountFiadoIncApi | 昆塔斯·菲亚多公司 | ACCOUNT_FIADOINC_LAMBDA_URL |
IAccountFiadoSAApi | 南澳大利亚州 | ACCOUNT_FIADOSA_LAMBDA_URL |
IAccountPagoConfiadoApi | 库恩塔斯·帕果孔菲亚多 | ACCOUNT_PAGOCONFIADO_LAMBDA_URL |
IAccountBeneficiaryApi | 受益人 | ACCOUNT_BENEFICIARY_LAMBDA_URL |
IBankAccountApi | 库恩塔斯班卡利亚 | BANK_ACCOUNT_LAMBDA_URL |
塞尔维西奥斯-德帕果
| 接口 | 德克赖普西翁 | 环境变量 |
IStpSpeiApi | SPEI 转让 | STP_SPEI_LAMBDA_URL |
IStpServicePaymentApi | STP 服务之道 | STP_SERVICE_PAYMENT_LAMBDA_URL |
ICentralPaymentsConnectorApi | 中心教师 | CENTRAL_PAYMENTS_LAMBDA_URL |
ICollectorApi | 科布兰萨 | COLLECTOR_LAMBDA_URL |
塔尔耶塔骑士团
| 接口 | 德克赖普西翁 | 环境变量 |
ICardApi | 暂停会议 | CARD_LAMBDA_URL |
IPomeloApi | 波梅洛综合总会 | POMELO_LAMBDA_URL |
IPomeloProcessorApi | 普罗塞萨多尔·波梅洛 | POMELO_PROCESSOR_LAMBDA_URL |
Servicios de Riesgo 和欺诈
| 接口 | 德克赖普西翁 | 环境变量 |
IRiskProfileApi | 皮条客 | RISK_PROFILE_LAMBDA_URL |
IFraudPreventionEngineApi | 汽车反欺诈 | FRAUD_PREVENTION_LAMBDA_URL |
IBlackListApi | 列作线草 | BLACKLIST_LAMBDA_URL |
ITransactionAlertApi | 情报中心 | RISK_PROFILE_LAMBDA_URL |
登机仪式
| 接口 | 德克赖普西翁 | 环境变量 |
IOnboardingApi | 登上用益机 | ONBOARDING_LAMBDA_URL |
IOnboardingBusinessApi | 登入国家 | ONBOARDING_BUSINESS_LAMBDA_URL |
ICnbvApi | 综合CNBV | CNBV_BUSINESS_LAMBDA_URL |
通讯社
| 接口 | 德克赖普西翁 | 环境变量 |
IFiadoMessagesApi | 门萨耶里亚国际 | FIADO_MESSAGES_LAMBDA_URL |
IFirebaseConnectorApi | 推动通知 | FIREBASE_CONNECTOR_LAMBDA_URL |
IZendeskApi | 综合禅桌 | ZENDESK_LAMBDA_URL |
塞内加尔
| 接口 | 德克赖普西翁 | 环境变量 |
IActivityApi | 国家行动 | ACTIVITY_BUSINESS_LAMBDA_URL |
IServiceApi | 塞尔维西奥斯·德涅戈西奥 | SERVICE_BUSINESS_LAMBDA_URL |
IPriceListApi | 排行榜 | PRICELIST_BUSINESS_LAMBDA_URL |
IPayrollApi | 诺米纳 | PAYROLL_BUSINESS_LAMBDA_URL |
IOrderCollectorApi | 洛布朗萨河流域 | ORDER_COLLECTOR_LAMBDA_URL |
Servicios 辅助系统
| 接口 | 德克赖普西翁 | 环境变量 |
IAddressApi | 司长 | ADDRESS_LAMBDA_URL |
IContactInformationApi | 联系信息 | CONTACT_INFORMATION_LAMBDA_URL |
IDeviceApi | 处置者 | DEVICE_LAMBDA_URL |
IGroupApi | 咕噜声 | GROUP_LAMBDA_URL |
IP2pContactApi | 联系人P2P | P2P_CONTACT_LAMBDA_URL |
IExchangeRatesApi | Tipos de Cambio (法语) | EXCHANGE_RATES_LAMBDA_URL |
IProductCatalogApi | Catálogo de productos( 生产公司) | PRODUCT_CATALOG_LAMBDA_URL |
IContractGeneratorApi | 创造者对抗者 | CONTRACT_GENERATOR_LAMBDA_URL |
IDocumentImageProcessorApi | 普罗塞萨多尔·伊马赫内斯 | DOCUMENT_IMAGE_PROCESSOR_LAMBDA_URL |
ILegalDocumentApi | 文档法 | LEGAL_DOCUMENT_LAMBDA_URL |
IObservationsApi | 观察组 | OBSERVATIONS_LAMBDA_URL |
IDirectoriesApi | 主任 : múltiples | DIRECTORIES_LAMBDA_URL |
IDirectorySettingApi | 主任会议 | DIRECTORY_SETTING_LAMBDA_URL |
IAppSelectionDataApi | 应用的远程教育 | APP_SELECTION_DATA_LAMBDA_URL |
IReferralBusinessApi | 参考文献 | REFERRAL_BUSINESS_LAMBDA_URL |
IEventHistoryApi | 事件简介 | EVENT_HISTORY_LAMBDA_URL |
IReportProcessorBusinessApi | 报告进程 | REPORT_PROCESSOR_LAMBDA_URL |
IPeopleBusinessApi | 人的权利 | PEOPLE_BUSINESS_LAMBDA_URL |
外来者
| 接口 | 德克赖普西翁 | 环境变量 |
ITernApi | 泰恩语 | TERN_LAMBDA_URL |
IBBVARstApi | 综合BBVA RST | BBVA_RST_LAMBDA_URL |
IEstafetaApi | 埃斯塔费塔省 | ESTAFETA_LAMBDA_URL |
ICognitoConnectorApi | 科尼奥多 | COGNITO_CONNECTOR_LAMBDA_URL |
ICognitoV2Api | 认知V2 | COGNITO_CONNECTOR_LAMBDA_URL |
ISTPAccountApi | Cuentas STP 软件 | STP_ACCOUNT_LAMBDA_URL |
出版社(Colas SQS)
自由之声(la librería prove que envían mensajes a colas SQS)
| 接口 | 德克赖普西翁 | 变量 de Endrono (队列) |
INotificationMessagesPublisher | 推/电子邮件/垃圾通知 | NOTIFICATION_MESSAGES_QUEUE |
INotificationWSMessagesPublisher | 网络证券 | NOTIFICATION_WS_QUEUE |
ISessionActivityPublisher | 国家行动 | SESSION_ACTIVITY_QUEUE |
ITransactionPublisher | 过渡活动 | TRANSACTION_QUEUE |
IActivityPublisher | 活动活动 | ACTIVITY_QUEUE |
ITransactionAlarmPublisher | 阿尔马斯·德·特克西翁 | TRANSACTION_ALARM_QUEUE |
IGsfSyncPublisher | 阿尔塔·德尔克雷迪托和帕果斯GsfSyncQueue.fifo(中文(简体) ) | GSF_SYNC_QUEUE_URL |
IPublisher | 出版商 genérico | 可配置 |
Ejemplo 出版社
import { inject, injectable } from "inversify";
import { INotificationMessagesPublisher } from "@fiado/api-invoker";
import { NotificationQueueMessageRequest } from "@fiado/type-kit";
@injectable()
export class NotificationService {
constructor(
@inject("INotificationMessagesPublisher")
private notificationPublisher: INotificationMessagesPublisher
) {}
async sendPushNotification(userId: string, message: string): Promise<void> {
const notification: NotificationQueueMessageRequest = {
userId,
type: "PUSH",
message,
timestamp: new Date().toISOString()
};
await this.notificationPublisher.publish(notification);
}
}
普罗耶克托的乌索
Ejemplo:咨询主任
import { inject, injectable } from "inversify";
import { IDirectoryApi } from "@fiado/api-invoker";
import { log } from "@fiado/logger";
@injectable()
export class UserService {
constructor(
@inject("IDirectoryApi") private directoryApi: IDirectoryApi
) {}
async getUsersByIds(directoryIds: string[]): Promise<any[]> {
try {
const response = await this.directoryApi.getByIds(directoryIds);
log.info("Directories fetched successfully", { count: response.length });
return response;
} catch (error) {
log.error("Error fetching directories", error);
throw error;
}
}
async getUserByPhone(phoneNumber: string): Promise<any> {
return await this.directoryApi.getByPhoneNumber(phoneNumber);
}
}
埃让普罗塞萨尔·特纳克西翁
import { inject, injectable } from "inversify";
import { ITransactionApi, ITransactionPublisher } from "@fiado/api-invoker";
@injectable()
export class PaymentManager {
constructor(
@inject("ITransactionApi") private transactionApi: ITransactionApi,
@inject("ITransactionPublisher") private transactionPublisher: ITransactionPublisher
) {}
async processPayment(paymentData: any): Promise<void> {
// 1. Crear transacción via API síncrona
const transaction = await this.transactionApi.create(paymentData);
// 2. Publicar evento para procesamiento asíncrono
await this.transactionPublisher.publish({
transactionId: transaction.id,
event: "PAYMENT_INITIATED",
timestamp: new Date().toISOString()
});
}
}
Ejemplo:身份认证证书
import { inject, injectable } from "inversify";
import { IIdentityApi, IRiskProfileApi } from "@fiado/api-invoker";
@injectable()
export class KYCService {
constructor(
@inject("IIdentityApi") private identityApi: IIdentityApi,
@inject("IRiskProfileApi") private riskProfileApi: IRiskProfileApi
) {}
async verifyUser(directoryId: string, documents: any): Promise<boolean> {
// Verificar identidad
const identityResult = await this.identityApi.verify(directoryId, documents);
// Evaluar perfil de riesgo
const riskProfile = await this.riskProfileApi.evaluate(directoryId);
return identityResult.verified && riskProfile.score < 0.5;
}
}
环境变量
Cada客户端 API require una variable de endrono con con la URL base del Lambda desino. 中国植物物种信息数据库. (原始内容存档于2019-09-31). El formato estándar es:
{SERVICE_NAME}_LAMBDA_URL=https://{api-id}.execute-api.{region}.amazonaws.com/v1/
模板中的 Cfiguración.yml
Environment:
Variables:
DIRECTORY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-directory-lambda}}"
IDENTITY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-identity-lambda}}"
TRANSACTION_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-transaction-lambda}}"
# ... otras URLs
# Colas SQS
NOTIFICATION_MESSAGES_QUEUE: !ImportValue SqsNotificationMessagesQueueUrl
SESSION_ACTIVITY_QUEUE: !ImportValue SqsSessionActivityQueueUrl
URL 解决方案
Las URLs se almacenan en (中文(简体) ) SSM 参数存储器 永不放弃 中央情报局/中央情报局自动部署网络.
普罗耶克托岛
src/
├── index.ts # Exportaciones públicas
├── container.config.ts # ContainerModule con todos los bindings
├── utils/ # Utilidades compartidas
│ └── InvokerUtils.ts
│
├── directory/ # Ejemplo de estructura de módulo
│ ├── index.ts # Re-exportaciones del módulo
│ ├── DirectoryApi.ts # Implementación del cliente
│ └── interfaces/
│ └── IDirectoryApi.ts # Interface del cliente
│
├── transaction/ # Módulo con API y Publisher
│ ├── index.ts
│ ├── api/
│ │ ├── TransactionApi.ts
│ │ └── ITransactionApi.ts
│ └── queue/
│ ├── TransactionPublisher.ts
│ └── ITransactionPublisher.ts
│
├── notificationMessages/ # Módulo solo Publisher
│ ├── index.ts
│ └── queue/
│ ├── NotificationMessagePublisher.ts
│ └── interfaces/
│ └── INotificationMessagesPublisher.ts
│
└── [60+ módulos adicionales...]
埃斯图克图拉·德·昂·莫杜洛 API
{service-name}/
├── index.ts # export * from './interfaces/I{Service}Api';
│ # export * from './{Service}Api';
├── {Service}Api.ts # Implementación @injectable()
└── interfaces/
└── I{Service}Api.ts # Interface con JSDoc
埃斯特鲁克图拉 de un Módulo con queue
{service-name}/
├── index.ts
├── api/
│ ├── {Service}Api.ts
│ └── I{Service}Api.ts
└── queue/
├── {Service}Publisher.ts
└── interfaces/
└── I{Service}Publisher.ts
发展会议
诺门克拉图拉
| 元素 | 帕特龙 | 埃让普罗 |
| 卡尔佩塔·德莫杜洛 | kebab-case | account-fiadoinc/ |
| 接口 API | I{Service}Api | IDirectoryApi |
| API 执行 | {Service}Api | DirectoryApi |
| 界面发布器 | I{Service}Publisher | ITransactionPublisher |
| 执行出版商 | {Service}Publisher | TransactionPublisher |
API 执行方案
import dotenv from 'dotenv';
import { inject, injectable } from "inversify";
import { IHttpRequest } from "@fiado/http-client";
import { I{Service}Api } from "./interfaces/I{Service}Api";
dotenv.config();
@injectable()
export class {Service}Api implements I{Service}Api {
private readonly baseUrl = process.env.{SERVICE}_LAMBDA_URL || "";
constructor(
@inject("IHttpRequest") private httpRequest: IHttpRequest
) {}
public async getById(id: string): Promise<any> {
const url = `${this.baseUrl}?id=${id}`;
const operationName = "getById";
return await this.httpRequest.get(url, null, {
'operationName': operationName
});
}
}
执行出版社
import { SendMessageCommand, SQSClient } from "@aws-sdk/client-sqs";
import { inject, injectable } from "inversify";
import { I{Service}Publisher } from "./interfaces/I{Service}Publisher";
@injectable()
export class {Service}Publisher implements I{Service}Publisher {
private readonly queueUrl = process.env.{SERVICE}_QUEUE;
async publish(message: any): Promise<void> {
const client = new SQSClient();
const command = new SendMessageCommand({
QueueUrl: this.queueUrl,
MessageBody: JSON.stringify(message)
});
await client.send(command);
}
}
Todas las lamadas HTTP 包含 Huyen el 头部 operationName 许可证 :
- 原木上的Trazabilidad
- 马特里亚斯·波克罗西翁
- X- Ray 调试
依赖性
运行时间
| 依赖性 | 韦尔西翁 | 普罗波西托语Name |
@aws-sdk/client-sqs | ^ 3.919.0 (韩语) | 客户端 SQS para 出版商 |
@fiado/gateway-adapter | ^1.1.50 (中文(简体) ) | Tipos de respuesta API (英语) |
@fiado/http-client | ^1.0.7 (中文(简体) ) | 客户端 HTTP 基础 |
@fiado/logger | ^1.0.3 (中文(简体) ) | 记录构造 |
@fiado/type-kit | ^2.1.28 (中文(简体) ) | DTOs 和 Tipos 堆肥 |
inversify | ^ 6.2.2 | 依附区 |
reflect-metadata | ^ 0.2.2 (中文(简体) ) | 元代装饰 |
dotenv | ^ 16.4.7 (中文(简体) ) | 排雷变量 |
发展
| 依赖性 | 韦尔西翁 | 普罗波西托语Name |
@types/node | ^20.17.24 (中文(简体) ) | 提波斯节点js |
typescript | (同声) | 编译器类型脚本 |
汇编和宣传
构建
npm run build
热那拉群岛 .js 尔 .d.ts 导演 bin/。 。 。 .
公众
npm version patch|minor|major
npm publish
菲亚多孔皮古拉多国家登记处 .npmrc。 。 。 .
菲亚多公司. @fiado/api-invoker v 1.5.34 (英语)