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