step4. API开发及调试

更新时间:2019-01-24 10:43:15

概述

对于后置服务非托管类型的API,由于是直接集成已经存在的RESTful API,所以不涉及到API的开发,只需对后端服务进行配置即可,利用平台提供的调试工具调试通过即可上线。对于后置服务是托管类型的API,API的实现和运行有需要借助平台来完成,所以就涉及到API的开发,开发完成之后同样需要进行调试,调试通过之后可以发布上线。

非托管API

如果API的后端服务是非托管类型的,那么就不涉及API的开发,因为是您已经存在的RESTful API,只需要进行利用平台提供的调试工具进行调试,调试通过即可,在API列表中点击某个API的 "调试" 链接。

Untitled 10.png | center | 704x302
或者点击API详情页右上角的 "调试" 按钮

Untitled 11.png | center | 704x302
进入到API的调试页面,如下图所示:

Untitled 13.png | center | 1280x600
如果API定义了入参,则在请求参数中填写入参的值,然后点击 "发送请求" 按钮,查看右侧的调试信息窗口就可以看到API返回结果。

注意:

  • 调试工具只支持HTTP访问API

  • 调试工具只支持默认域名访问API

托管API(流式服务编排)

如果API的后端服务是托管类型,那么点击“新增流式服务编排”按钮进入API后端服务的开发流程,但是注意开发完成之后需要将新增API的流程走完。

Untitled 9.png | center | 704x330

操作界面

下面就是流式服务编排的界面,分为几个部分。

image | center

内置节点
节点是我们进行服务编排的原材料,节点本身也是需要进行配置或开发,完成之后将不同的节点串联在一起组成一条流。

工作区
我们在工作区对节点进行配置、开发、串联、调试,工作区的产物就是节点编排出来的流,对应与一个API。只不过这个API是图形化的方式来实现,并且是托管的。

节点信息
流和节点的基本信息展示,比如流和节点的名称、ID、功能描述等

调试信息
这个tab是用来展示调试过程中的结果

操作区

  • 保存:将当前工作区的流进行保存,如果您之前已经成功部署过一次,那么保存并不会替换之前已经部署成功的流的实例

  • 部署:部署会自动保存当前的工作区的流并进行相应的合法性检查,通过之后会提示部署成功

  • 退出:退出前请注意保存您的修改,退出会关闭当前页面。

基本概念

节点
从左侧菜单中选择的,可以进行配置或需要进行开发


不同的节点通过连线串起来组成的组合我们叫做流,我们说的服务编排也就是对不同对节点进行串联
组合组成一条流

msg
不同的节点中之间都一条连线,连线中流转的数据我们称为msg。不同的节点对msg进行处理然后
传递出去,流到下一个节点,其中msg.payload是内置的变量,每个节点的输出值都会默认塞到
msg.payload中,我们可在节点中直接引用。

输入、输出
大部分节点都一个输入点,一个输出点,但是以下节点不一样

  • API请求节点只有输出,因为它是整个流的输入,所以没有输入点。

  • API返回节点作为流的输出,所以没有输出点。

  • 路由节点有多个输出点,但是同一时间之会有一个输出点有数据输出。

image | center

内置节点

  • API请求节点

image.png | center | 140x44

模拟API的请求,作为一个流的开始节点。可以在API请求节点中输入API的入参,点击调试,来运行整个流。

image | center

  • 路由节点

image.png | center | 125x50

过您定义的逻辑规则来判断是否要将流入该节点的msg路由到下一个节点。增加一个规则,则该路由节点增加一个输出分支。如该条规则满足,则msg会被路由到该规则对应的输出分支,如果多条规则同时满足,则按照规则添加的顺序,msg会被路由到最先添加的那个规则对应的输出分支。
如下面这样的配置就是如果msg.payload.id==1 则走上面的第1条分支,如果msg.payload.id==2则走下面的第2条分支。

image.png | center | 802x588

  • 服务节点

image.png | center | 119x41

代表项目中的可用服务,不需要编写代码就可以完成对服务的调用。在服务节点可以选择您项目中可以使用的服务,然后填写入参的值,入参的值可以是从msg中获取的属性的值。服务调用如果失败会直接返回失败,如果成功,会把返回报文的data部分作为下个节点的msg.payload。

image.png | center | 704x464

  • 脚本节点

image.png | center | 122x40

支持编写脚本实现您的业务逻辑。可以从msg中获取属性值,也可以在脚本中调用服务,如果脚本没有返回或是返回为空,则msg.payload为当前节点的payload。如果脚本有返回,则返回的值会覆盖msg.payload,目前只支持javascript。

image.png | center | 577x641

  • API返回

image.png | center | 132x43

将当前流处理的最终结果通过msg的属性值返回出去,作为当前流对应的API的返回结果,默认输出的结果是msg.payload。

image.png | center | 518x294

开发示例

示例1:创建hello world托管API

image | center

我们看到API请求节点已经被自动被放置在工作区中,因为我们当前是从创建API的流程中进入到流式服务编排界面到,所以我们到输入节点就只能是API请求节点,这个节点就是模拟一个API请求,方便您调试整个流,这个节点是整个流的起始节点。
我们暂且把这个节点放在一边,从左侧找到一个脚本节点,然后把API请求的输出点连线到脚本节点到输入点,我们在脚本节点中实现我们的hello world.

image | center

那么我们双击脚本节点(注意所有的节点都是双击唤出编辑页面),弹出脚本节点的编辑页面,在名称栏中输入helloWorld,在脚本内容中遵从javascript的语法编写您的脚本,其中前面有提到所有的即节点都会将自己的输出内容放到内置变量msg.payload中。因为我们当前的流对应的API是testAPI,这个函数只有两个入参id和code.

Untitled.png | center | 704x302

所以我们要获取到入参就直接输入msg.payload.id和msg.payload.code来获取入参的值,如果您定义的入参名称和我们不一样,那么就按照您实际的入参名输入即可。

image | left
点击完成,则保存了您的脚本节点,注意我们这个是个流是API后端服务,所以还需要以API返回节点作为输出节点,不然部署时会报错。将API返回节点的输入点连到helloWorld节点的输出点,我们的hello world就算完成了。注意,我们的API返回节点默认返回的值就是msg.payload,因为我们刚才在脚本节点中return result,那么这个result会覆盖掉msg.payload,所以最终API返回的值应该就是脚本节点中result的值。

image | left
到这里我们hello world程序就写完了,现在我们开始调试,我们前面提到API请求节点就是模拟API的请求用来调试流的,双击API请求节点,唤出编辑窗口,在参数中输入您的API入参,点击完成,在API请求节点的左侧红框中点击一下就开始调试,或者直接点击API请求节点编辑框中的“开始调试”按钮。

image | center

在调试之前您需要您需要先点击右上角的“部署”按钮完成流的部署,任何一次流或节点的编辑必须部署成功才能生效,部署的时候会检查您的流编辑是否正确。如果您的节点有修改,但是没有部署,则会弹出流程未部署的窗口提示您部署。

image | center

点击调试之后,在右边的调试窗口会输出最终的API返回结果和调试日志,如下图所示。

image | center
您也可以到外层的API管理页面,点击这个API的“调试”,进行调试。

Untitled 2.png | center | 704x330

示例2:服务节点的编排

如果我们想调用API,又不想编写代码,那么我们就可以直接调用服务节点,在服务节点里面去配置您需要调用的服务(官方服务、自研服务、市场服务)。如果您想根据API的入参的不同来完成对不同服务的调用,那么就可以通过路由节点和服务节点的配合来完成,而无需写代码,下面我们就看下是如何视线这样带需求。我们还是首先选择API请求节点作为输入节点,我们看到节点参数是id、key,这个是我们当前流式服务编排对应的API定义中定义的入参。

Untitled 5.png | center | 704x357

我们想根据API入参中id的值的不同调用不同的服务节点,所以我们在API节点再增加一个路由节点,然后把这个两个节点连线起来。我们前面已经提到了,路由节点就类似于if else或switch case这样到语法,我们可以双击路由节点,因为是需要根据id的值不同来调用不同的服务节点,所以路由节点的属性中填写msg.payload.id。然后点击下方的 "+添加" 按钮添加规则,添加的规则目前支持字符串类型和数字类型的入参。由于我们的API入参id是数字类型的,所以这里我们选择数字,如果入参是字符串,则这里选择字符串。添加完成规则之后我们看到路由节点的右侧出现了两个输出点,当入参id的值等于1则走规则1的分支,如果等于2则走规则2的分支。

Untitled 4.png | center | 704x357

我们让规则1对应的分支上调用站内信服务的一个API,然后在规则2对应的分支上调用站内信服务的另一个API,对应的服务节点的API入参中我们可以写规定的值也可以将API请求节点中的入参传递过来,比如msg.payload.key。

Untitled 11.png | center | 704x412
我们将API返回节点和服务节点连线,部署完成之后点击API请求按钮的绿色箭头,可以看到右侧调试结果。

Untitled 12.png | center | 704x412

results matching ""

    No results matching ""