打造自己的 grpc 公用服务接口

创建一个 grpc client 实例

    // 加载proto文件,生成一个Definition
    const PROTO_PATH = path.join(__dirname, '../protos/rpc.proto')
    const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
      defaults: true,
      keepCase: true,
      includeDirs: [path.join(__dirname, '../protos')]
    })
    
    // 加载该Definition,获取一个中间实例
    const { admin } = (grpc.loadPackageDefinition(packageDefinition).credit as any).risk

    // 以此生成client
    const client = new admin.RiskAdmin(
      grpcAddress,
      grpc.credentials.createInsecure(),
      grpcOptions    // 大小限制等{grpc.max_send_message_length': 1024 * 1024 * 16,...}
    )

    // 返回client实例
    return client

据此获取一个 ServiceCaller

    this.adminServiceCaller = 
      promisify(gprcClient.riskAdminService.bind(gprcClient))

构造用于外部调用的call方法

    // 构造接口参数
    const req: RiskAdminReq = {
      RiskAdminReqHeader: {
        Cmd: cmd,
        Token: profile.email,
        Version: version,
        AppID: appID,
        ReqTime: Math.floor(Date.now() / 1000),
        ReqServer: 'risk api server',
        FlowNo: `${appID}-${version}`
      },
      Params: Buffer.from(JSON.stringify(noEmptyParams))
    }


    // 关键步骤:调用ServiceCaller进行通信,获取返回数据
    const res = await this.adminServiceCaller(req)
    
    // 返回数据
    return { header: res.RiskRspHeader, data: res.Data }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值