sdk-example-generator
v0.1.4
Published
我们拥有多个语言的sdk,都基于 swagger 定义生成,我们需要给每个 api 写示例,实际上是一个比较重复的过程,但是每种 sdk 构建参数的行为不一样。 我们需要定义一套规则,用于描述每个 api 的参数构建行为,然后根据这个规则,生成对应语言的示例代码。 从而只需要输入一份json文件,以及就可以生成多种语言的示例代码。
Downloads
6
Readme
Sdk Example Converter
我们拥有多个语言的sdk,都基于 swagger 定义生成,我们需要给每个 api 写示例,实际上是一个比较重复的过程,但是每种 sdk 构建参数的行为不一样。 我们需要定义一套规则,用于描述每个 api 的参数构建行为,然后根据这个规则,生成对应语言的示例代码。 从而只需要输入一份json文件,以及就可以生成多种语言的示例代码。
定义代码生成规则
我们可以将一个完整的 sdk 示例代码拆分为两大部分:
- 前置代码,包含:
- 依赖的引用,其中又分为通用的依赖和需要的依赖
- main function 的构建,其中包括:
- 构建完整的代码,比如 入口方法,引用,包名等等
- 创建 Client 并鉴权
- 业务代码,包含:
- 创建对应的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'
- 代码:
- 构建请求参数
- python: json payload
- java:
- go:
params := vm.NewCreateVmParams()
${lower(tag)}.New${apiName}Params()
params.RequestBody = &models.VMCreationParams{{...}}
- node: json payload
- 发送请求
- 等待请求返回
部分1可以