1.8.2.4 step4. API开发及调试
服务产线-API开发及调试
更新时间:2018-03-27 11:42:12
概述
对于后置服务非托管类型的API,由于是直接集成已经存在的RESTful API,所以不涉及到API的开发,只需对后端服务进行配置即可,利用平台提供的调试工具调试通过即可上线。对于后置服务是托管类型的API,API的实现和运行有需要借助平台来完成,所以就涉及到API的开发,开发完成之后同样需要进行调试,调试通过之后可以发布上线。
非托管API
如果API的后端服务是非托管类型的,那么就不涉及API的开发,因为是您已经存在的RESTful API,只需要进行利用平台提供的调试工具进行调试,调试通过即可,在API列表中点击某个API的 "调试" 链接。
或者点击API详情页右上角的 "调试" 按钮
从“调试”入口进入,会出现该API的调试界面
注意:
调试工具只支持HTTP访问API
调试工具只支持默认域名访问API
托管API(流式服务编排)
如果API的后端服务是托管类型,那么在API管理列表的“操作区”点击“开发”,即可进入流式服务编排的界面。
操作界面
下面就是流式服务编排的界面,分为几个部分。
工作区
我们在工作区对节点进行配置、开发、串联、调试,工作区的产物就是节点编排出来的流,对应与一个API。只不过这个API是图形化的方式来实现,并且是托管的。
节点信息
流和节点的基本信息展示,比如流和节点的名称、ID、功能描述等
调试信息
这个tab是用来展示调试过程中的结果
操作区
保存:将当前工作区的流进行保存,如果您之前已经成功部署过一次,那么保存并不会替换之前已经部署成功的流的实例
部署:部署会自动保存当前的工作区的流并进行相应的合法性检查,通过之后会提示部署成功
退出:退出前请注意保存您的修改,退出会关闭当前页面。
基本概念
节点
从左侧菜单中选择的,可以进行配置或需要进行开发
流
不同的节点通过连线串起来组成的组合我们叫做流,我们说的服务编排也就是对不同对节点进行串联
组合组成一条流
msg
不同的节点中之间都一条连线,连线中流转的数据我们称为msg。不同的节点对msg进行处理然后
传递出去,流到下一个节点,其中msg.payload是内置的变量,每个节点的输出值都会默认塞到
msg.payload中,我们可在节点中直接引用。
输入、输出
大部分节点都一个输入点,一个输出点,但是以下节点不一样
API请求节点只有输出,因为它是整个流的输入,所以没有输入点。
API返回节点作为流的输出,所以没有输出点。
路由节点有多个输出点,但是同一时间之会有一个输出点有数据输出。
内置节点
- API请求节点
模拟API的请求,作为一个流的开始节点。可以在API请求节点中输入API的入参,点击调试,来运行整个流。
- 路由节点
过您定义的逻辑规则来判断是否要将流入该节点的msg路由到下一个节点。增加一个规则,则该路由节点增加一个输出分支。如该条规则满足,则msg会被路由到该规则对应的输出分支,如果多条规则同时满足,则按照规则添加的顺序,msg会被路由到最先添加的那个规则对应的输出分支。
如下面这样的配置就是如果msg.payload.id==1 则走上面的第1条分支,如果msg.payload.id==2则走下面的第2条分支。
- 服务节点
代表项目中的可用服务,不需要编写代码就可以完成对服务的调用。在服务节点可以选择您项目中可以使用的服务,然后填写入参的值,入参的值可以是从msg中获取的属性的值。服务调用如果失败会直接返回失败,如果成功,会把返回报文的data部分作为下个节点的msg.payload。
- 脚本节点
支持编写脚本实现您的业务逻辑。可以从msg中获取属性值,也可以在脚本中调用服务,如果脚本没有返回或是返回为空,则msg.payload为当前节点的payload。如果脚本有返回,则返回的值会覆盖msg.payload,目前只支持javascript。
- API返回
将当前流处理的最终结果通过msg的属性值返回出去,作为当前流对应的API的返回结果,默认输出的结果是msg.payload。
开发示例
示例1:创建hello world托管API
我们看到API请求节点已经被自动被放置在工作区中,因为我们当前是从创建API的流程中进入到流式服务编排界面到,所以我们到输入节点就只能是API请求节点,这个节点就是模拟一个API请求,方便您调试整个流,这个节点是整个流的起始节点。
我们暂且把这个节点放在一边,从左侧找到一个脚本节点,然后把API请求的输出点连线到脚本节点到输入点,我们在脚本节点中实现我们的hello world.
那么我们双击脚本节点(注意所有的节点都是双击唤出编辑页面),弹出脚本节点的编辑页面,在名称栏中输入helloWorld,在脚本内容中遵从javascript的语法编写您的脚本,其中前面有提到所有的即节点都会将自己的输出内容放到内置变量msg.payload中。因为我们当前的流对应的API是testAPI,这个函数只有两个入参id和code.
所以我们要获取到入参就直接输入msg.payload.id和msg.payload.code来获取入参的值,如果您定义的入参名称和我们不一样,那么就按照您实际的入参名输入即可。
在调试之前您需要您需要先点击右上角的“部署”按钮完成流的部署,任何一次流或节点的编辑必须部署成功才能生效,部署的时候会检查您的流编辑是否正确。如果您的节点有修改,但是没有部署,则会弹出流程未部署的窗口提示您部署。
点击调试之后,在右边的调试窗口会输出最终的API返回结果和调试日志,如下图所示。
示例2:服务节点的编排
如果我们想调用API,又不想编写代码,那么我们就可以直接调用服务节点,在服务节点里面去配置您需要调用的服务(官方服务、自研服务、市场服务)。如果您想根据API的入参的不同来完成对不同服务的调用,那么就可以通过路由节点和服务节点的配合来完成,而无需写代码,下面我们就看下是如何视线这样带需求。我们还是首先选择API请求节点作为输入节点,我们看到节点参数是id、key,这个是我们当前流式服务编排对应的API定义中定义的入参。
我们想根据API入参中id的值的不同调用不同的服务节点,所以我们在API节点再增加一个路由节点,然后把这个两个节点连线起来。我们前面已经提到了,路由节点就类似于if else或switch case这样到语法,我们可以双击路由节点,因为是需要根据id的值不同来调用不同的服务节点,所以路由节点的属性中填写msg.payload.id。然后点击下方的 "+添加" 按钮添加规则,添加的规则目前支持字符串类型和数字类型的入参。由于我们的API入参id是数字类型的,所以这里我们选择数字,如果入参是字符串,则这里选择字符串。添加完成规则之后我们看到路由节点的右侧出现了两个输出点,当入参id的值等于1则走规则1的分支,如果等于2则走规则2的分支。
我们让规则1对应的分支上调用站内信服务的一个API,然后在规则2对应的分支上调用站内信服务的另一个API,对应的服务节点的API入参中我们可以写规定的值也可以将API请求节点中的入参传递过来,比如msg.payload.key。