阿里云 OpenAPI 开发者门户致力于提升阿里云 OpenAPI 相关体验,而 OpenAPI 的 SDK 示例(以下皆称为 CodeSample)则是提升体验的重要环节,但是以往受限于 CodeSample 多语言支持以及调试需要大量的人力,所以我们特意开发了 Darabonba 语言,通过 Darabonba 语言可以更好的描述 OpenAPI ,其具备兼容多网关、描述任意风格的 OpenAPI,并且可通过编写 Darabonba 的文件自动化生成多语言的 SDK 的特点。而且 Darabonba 具备编程的灵活性,所以不仅能为 OpenAPI 生成 SDK 还可以通过 Darabonba 编写关于 SDK 中OpenAPI 使用的场景化 CodeSample,为 SDK 的使用者提供了最为实用的指导。本篇文章将通过三个示例循序渐进的帮助大家生成属于自己的 CodeSample。
如何创建 CodeSample 项目
创建项目
首先,我们可以进入阿里云 OpenAPI 开发者门户的主页面,点击顶部导航栏的社区按钮:
这里没有登录的同学可能需要使用阿里云账号登录,在登陆成功后点击下面的创建 CodeSample 按钮即可进入,项目创建页面,这里只需要填写本次 CodeSample 的项目标题和描述即可,其他的信息已经填写好了包括等会儿需要用的 Console 模块,在依赖库中也帮大家默认填写了。
所以在输入了标题后描述后直接点击创建完成就好了:
大家就可以看到完成创建页面中,我们已经创建了 CodeSample 相关的三个文件:
- Darafile:Darabonba 的项目文件,其中最重要的就是通过 libraries 字段引入模块,这里我们为大家引入了 Console 模块。
- main.dara:Darabonba 脚本主要描写的文件,通过它可以生成各语言的 CodeSample,初始化的文件中为大家准备好了一段可以生成各语言的初始代码,点击红框中的按钮即可编辑,再编辑完成后通过点击页面最下面的提交审核按钮即可保存。
- README.md: 项目的描述文件,通过 Markdown 的语法书写即可。
在完成了上面三个文件的编辑以后,我们就可以通过页面上方的生成不同语言代码按钮来生成多语言的CodeSample:
在一段时间的等待以后,即可通过导航栏上的语言 Tab 切换来查看生成的结果,如果生成失败即会生成对应的 error.log 文件。
调试代码
在完成了代码的生成以后,我们需要通过调用调试运行按钮来确定各语言生成的代码是否正确,避免提交审核以后被拒绝。首先,我们需要按情况配置是否需要参数,如果需要配置参数则在 Darabonba 的 Tab 中通过点击配置调试参数按钮来配置运行时的参数。
在完成参数配置以后,我们可以在代码中做如下修改来使用传入的参数:
通过 来引用传入的参数。在完成了这个改动后,我们还是需要点击生成不同语言代码按钮来再一次重新生成各语言的代码。
在完成了生成以后,我们就可以在各语言的 Tab 中通过运行调试按钮开始调试各语言生成的代码了,点击该按钮会弹窗 CloudShell 的窗口,在自动完成依赖安装和代码编译后,执行命令行里自动写入的语句即可完成调试。
提交审核
在调试各语言通过后,我们就可以将我们写好的 CodeSample 项目提交审核了,通过下图中的按钮即可提交审核:
接下来,我们就可以在社区->我的贡献中看到,CodeSample 已经是审核中的状态了:
如果审核不通过,则会在审核拒绝中看到我们的 CodeSample 项目,点击进去可以看到拒绝的原因:
这就需要我们按照驳回的元一版来重新编辑我们的 CodeSample 了,而通过以后我们贡献的 CodeSample 就会出现了阿里云 OpenAPI 开发者门户的示例中心中,成为广大开发者学习和使用的对象:
使用 Darabonba 编写 CodeSample
Darabonba快速上手
Darabonba作为一门描述性语言,也有自己简单易用的语法,为了方便大家学习 Darabonba ,这里我们为大家提供了5分钟上手 Darabonba 指南和详细的 Darabonba 语言使用文档。而下面我们会通过两个示例为大家演示如何 Darabonba 编写 CodeSample 正确打开方式。
单个API的 CodeSample
当然,如果只是提交 Hello,World 文档是不能获得审核通过的,Darabonba 的 CodeSample 代码是为OpenAPI SDK 服务的,所以我们下面将通过为一个 OpenAPI 写CodeSample来为大家描写一个示例。
首先需要再新建一个API的项目,这里我们在依赖库中会加入我们将要编写 CodeSample 所对应的 SDK 模块,相关模块可以直接在 Darabonba 模块仓库中寻找,这里有大量阿里云云产品的 Darabonba 模块:
我们选取阿里云的短信服务的 SDK 模块 来编写其对应的CodeSample,首先我们进入模块的详情页面;在详情页面中,我们可以看到这个SDK 相关的一些跟 OpenAPI 请求相关的方法和定义了入参、出参的 Model。这里我们选取最为经典发送短信的 方法来编写相关 CodeSample ,并可以点击其对应的入参类型 和出参类型 来了解其如何使用,其中在入参中标记红星的为必选参数。
在对这个方法有一定的了解以后我们就接着来创建我们的项目,这次跟上次最大的区别就是:Darabonba 的 libraries 中我们需要填入相关的依赖,注意这里右边输入框中的模块名才是 dara 文件中 import 用的名字。
而在下一步中,我们就可以在代码中使用到 SDK 相关的模块编写其 CodeSample了:
因为我们的运行环境实在 CloudShell 中,所以直接通过环境变量获取 AK 即可运行,再编写完成后生成各语言代码,并配置其调试参数:
确定生成无误以后开始调试,可通过输入我们自己的手机号来调试是否正常发送短信,在成功的收到短信以后,我们就可以将 CodeSample 通过上面介绍的方式提交审核了。
完整的场景化 CodeSample
在了解了如何通过 Darabonba 的生态来编程实现多语言 CodeSample 以后,接下来我们就来做一件挑战的事情,就是通过组合多个 API 形成一个场景,这里我们以阿里云容器服务的 OpenAPI 为例实现一个,从 创建集群->查看集群状态 的示例。
首先还是新建一个项目,在依赖项中这次我们要用到仓库中容器服务相关的 SDK 模块:
通过引入对应的模块,我们就可以通过使用这些模块中对应的方法来实现上述的流程了,再加上相应的注释,一个完成的 CodeSample 示例编写就完成了,代码如下:
从上面我们可以到,要让该示例能够顺利的调试还需要配置 5 个参数:
通过配置这些参数,用户在调试该 CodeSample 时只需要输入对应的参数,即可完成托管版的 K8S 集群创建了。