封装了一个阿里云 NodeJS 客户端

查看 44|回复 1
作者:wenerme   
  • 欢迎使用和提议
  • 目前生成了部分接口
  • https://github.com/wenerme/wode/tree/main/packages/client

  • 简单易用的 阿里云 客户端

  • 可在浏览器端使用 - 需要自行处理 cors
  • 测试、工具为主
  • 表明不需要什么依赖

  • 接口定义基于代码生成
  • 默认以 Proxy+Interface 为主 - size 非常小
  • 之后可以考虑 stub method 方式 - 有 metadata



    Note Why?
    [ol]

  • 阿里云的客户端质量非常的差

  • @alicloud/openapi-client 一个文件、一个包
  • 19 个依赖
  • 最基础的依赖,可能要做非常多的兼容,所有都揉在一起,导致包很大 - 180kB/ gzip 42kB

  • 代码质量非常差,非常多 Utils.xyz 调用
  • https://www.unpkg.com/browse/@alicloud/[email protected]/src/client.ts 有 242 处 Util.

  • @alicloud/openapi-utils 一个文件、一个包

  • 阿里云的 API 文档质量非常的差

  • 例如 https://help.aliyun.com/zh/sdk/product-overview/v3-request-structure-and-signature
  • 签名文档里的 Demo 都对不上,最终产出的的 SignedHeaders 和 Signature 不一致
  • 导致怀疑是自己的问题
  • API explorer 质量差 - 我就只想要看到 curl 怎么执行的,但实际看不到请求目标、URL 、头 等信息
  • 返回的 DEBUG 链接当前用户 也打不开
  • 我只想要发起一些简单的请求,按需封装结构,请求简单透明,客户端易用
    [/ol]

    使用 request
  • 支持任意请求
  • 极少的代码量,最小的 bundle size

    import { request } from '@wener/cleint/alicloud';
    console.log(
      await request({
        endpoint: 'dytnsapi.aliyuncs.com',
        action: 'QueryTagInfoBySelection',
        version: '2020-02-17',
        accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
        accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
      }),
    );
    使用客户端
  • 基于 Proxy 的客户端
  • 支持类型推导

    import { AliCloudClient } from '@wener/cleint/alicloud';
    const aliCloudClient = new AliCloudClient({
      accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
      accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    });
    const api = aliCloudClient.getServiceClient({
      // 输入 product 和 version 会有补全
      // 更多的接口待生成
      product: 'Dytnsapi',
      version: '2020-02-17',
    });
    console.log(await api.QueryTagListPage({}));

    env, API, Process, 客户端

  • entro   
    支持下
    BTW ,@wener/cleint 的 cleint 看的难受
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部