sdk-example-generator
TypeScript icon, indicating that this package has built-in type declarations

0.1.4 • Public • Published

Sdk Example Converter

我们拥有多个语言的sdk,都基于 swagger 定义生成,我们需要给每个 api 写示例,实际上是一个比较重复的过程,但是每种 sdk 构建参数的行为不一样。 我们需要定义一套规则,用于描述每个 api 的参数构建行为,然后根据这个规则,生成对应语言的示例代码。 从而只需要输入一份json文件,以及就可以生成多种语言的示例代码。

定义代码生成规则

我们可以将一个完整的 sdk 示例代码拆分为两大部分:

  1. 前置代码,包含:
    1. 依赖的引用,其中又分为通用的依赖和需要的依赖
    2. main function 的构建,其中包括:
      1. 构建完整的代码,比如 入口方法,引用,包名等等
      2. 创建 Client 并鉴权
  2. 业务代码,包含:
    1. 创建对应的Api实例
    • python:
      • 代码:vm_api = VmApi(api_client) ${tag}Api(api_client)
      • 额外引用 from cloudtower import VmApi from cloudtower import ${tag}Api
    • java:
      • 代码: VmApi vmApi = new VmApi(apiClient); ${tag}Api ${tag}Api = new ${tag}Api(apiClient);
      • 额外引用: 无
    • go:
      • 代码:vmApi := client.VM ${lower(tag)}Api := client.${upper(tag)}
      • 额外引用: 无
    • node:
      • 代码:const vmApi = new VmApi(apiClient) const ${tag}Api = new ${tag}Api(apiClient)
      • 额外引用:import { VmApi } from 'cloudtower' `import { ${tag}Api } from 'cloudtower'
    1. 构建请求参数
    • python: json payload
    • java:
    • go:
      • params := vm.NewCreateVmParams() ${lower(tag)}.New${apiName}Params()
      • params.RequestBody = &models.VMCreationParams{{...}}
    • node: json payload
    1. 发送请求
    2. 等待请求返回

部分1可以

Readme

Keywords

none

Package Sidebar

Install

npm i sdk-example-generator

Weekly Downloads

0

Version

0.1.4

License

ISC

Unpacked Size

137 kB

Total Files

33

Last publish

Collaborators

  • cloudtower-fe