在我头条新闻谈API交换机的这时候曾谈及过加速合作开发网络平台,将要API加速合作开发的许多文本放进到API交换机中,前述上看紧紧围绕API全开发周期管理组织工作,这类主要包括了合作开发态,运转态,网络管理组织工作态。
对API交换机更多的是化解运转态的难题,API交换机这类如果高操控性结构设计,不做太多的协定切换,网络连接,统计数据态射等组织工作,那些组织工作如果放在API合作开发网络平台来顺利完成。API合作开发网络平台最后是合作开发顺利完成并曝露两个国际标准的Http APIUSB,并将USB注册登记和接入到API交换机。
API全开发周期管理组织工作
紧紧围绕API全开发周期管理组织工作上看,整座模块分割如下表所示:
单纯来说该些能降解为五个模块,即API合作开发网络平台,API交换机发动机,API监视网络管理组织工作网络平台,API全开发周期控管网络平台。
对现代ESB汇流排里头的网络连接器,协定切换等有关较为重的文本,都能迁移到API加速合作开发网络平台来顺利完成,即API合作开发网络平台曝露国际标准的API服务项目USB,注册登记和网络连接到API交换机发动机。而对API监视网络平台则从发动机采集笔记重要信息,展开API操控性监视和笔记监视预测。
API全开发周期控管网络平台同时实现APIUSB从结构设计,合作开发,试验,布署上架的全开发周期管理组织工作,也能认知为下层五个模块的两个标准化管理组织工作要道,同时实现和上面五个模块软件系统。
对API合作开发网络平台合作开发和实用性顺利完成的微服务项目APIUSB,能全力支持手动布署到微服务项目运转网络平台。
如前所述第一类可视化驱动力
在整座API合作开发网络平台同时实现中,核心思想仍然如果是如前所述第一类可视化驱动力,通过第一类可视化很好的同时实现USB和下层统计数据库,统计数据库表之间的解耦,也方便同时实现下层多统计数据库,多表的全力支持能力。
当前很多API加速合作开发网络平台都是如前所述统计数据库第一类或表,直接发布类似CRUD的APIUSB服务项目,但是如前所述是统计数据库表的直接发布,我们仍然建议逆向第一类这层,方便后续在第一类层展开有关的组合,规则扩展等操作。
第一类可视化和APIUSB契约
能直接在API合作开发网络平台创建第一类,并对统计数据项展开定义,第一类是两个多层的树状结构实体。两个第一类能向统计数据库生成多张表。对已经存在的统计数据第一类,也能展开组合,将多个组合为两个复合第一类结构。
第一类的好处即是两个完整的第一类属于同一开发周期,能一起展开事务控制。
两个结构设计好的第一类能默认生成国际标准的POST,GET,DELETE等USB操作方法,类似下图,整座第一类USB契约的生成也如果是手动的。
定义好的第一类能直接生成类似RAML,YAML,WADL等USB契约文件。
类似Swagger工具一样,顺利完成的第一类可视化这类也能直接导出不同语言,不同合作开发框架下的客户端消费框架,服务项目端提供框架代码。
第一类网络连接到统计数据库
前面讲到了,既能是统计数据库直接逆向第一类,也能是在第一类可视化顺利完成后,将第一类网络连接到统计数据库。顺利完成第一类和统计数据库表之间的态射。两个第一类能态射到多张统计数据库表,因此在态射过程中除了顺利完成统计数据库表和字段态射外,还需要顺利完成主外键关联关系的态射操作。
在顺利完成第一类模型和统计数据库表之间的态射和网络连接后,基本发布的APIUSB已经可用。
APIUSB发布
对完成的第一类定义,能选择具体发布哪些APIUSB服务项目能力。比如能只选择发布查询USB,也能只选择发布统计数据导入的POSTUSB等。
注意APIUSB的发布,具体能如前所述全局的第一类可视化,实用性具体需要发布到USB的数据项重要信息。很多这时候我们对统计数据第一类的操作,并不是操作整座第一类全集,而仅仅是部分统计数据项。
APIUSB模拟试验和验证
能对发布的APIUSB展开模拟试验和验证,因此需要提供在线的API试验工具,能够方便在线展开APIUSB的试验组织工作。同时能对试验过的用例和试验统计数据展开保存。
APIUSB文档生成
全力支持手动生成APIUSB文档的能力。这个地方能直接对接类似开源Swagger等工具来同时实现APIUSB文档的手动生成功能。
第一类常用USB操作
当第一类定义顺利完成后,能如前所述第一类展开有关APIUSB的手动生成。在这里单纯列下如前所述第一类常用的USB方法,主要主要包括新增一条统计数据,如前所述主键更新,查询,删除统计数据。其它的则是如前所述条件查询对统计数据展开查询有关操作等。
在GtiHub里头开源又两个xmysql的工具,能直接将整座mysql统计数据库中的统计数据库表发布为RestAPIUSB,具体能安装试用。
npm install -g xmysql xmysql -h localhost -u mysqlUsername -p mysqlPassword -d databaseName http://localhost:3000注意需要提前安装Node.js,部分USB方法列表如下表所示:
由于生成的APIUSB都没有有关的权限控制,因此该开源工具也仅仅用于自己试验和验证使用。但是生成的方法和API能作为API合作开发工具这时候参考。
前述上对APIUSB的生成,我们并不建议对复杂查询条件下的查询都通过GET方法来同时实现,更好的思路还是通过POST方法,将查询条件作为POST输入展开处理。
复合第一类一次生成
比如将订单作为两个第一类,前述主要包括了订单头和订单明细表,而在展开API生成这时候能一次生成如前所述订单第一类的插入操作,查询操作。最后查询出来的是两个订单复合实体Json统计数据。而对订单插入,也是先准备好整座订单实体重要信息,一次调用APIUSB顺利完成统计数据插入,也方便在APIUSB同时实现的这时候展开事务控制。
复合第一类生成的APIUSB更类似于领域第一类曝露的APIUSB服务项目能力。
分页全力支持
对查询APIUSB服务项目的生成,如果全力支持分页能力,具体分页的大小,本次查询访问具体页数等重要信息都能作为APIUSB的查询输入参数展开设置。
直接定义APIUSB并发布
在前面谈及了如前所述第一类来发布APIUSB服务项目,但是还有许多业务规则逻辑类USB,复杂的管理组织工作统计数据查询类USB等并不能单纯的通过第一类来手动生成。
因此还需要能够实现如前所述方法来发布APIUSB服务项目。
即在API加速合作开发网络平台能够展开APIUSB的自定义,详细的定义APIUSB的输入参数和输出参数重要信息。同时对定义顺利完成的USB同时实现和后台方法的绑定。
同时实现和JAR包里头的API接口的绑定
能同时实现和两个JAR包里头方法或函数的绑定,将两个方法或函数发布为两个Http APIUSB方法。在当前很多公有云的云服务项目汇流排产品上能看到这个同时实现方式。
同时实现和动态SQL的绑定
能将定义的两个APIUSB方法和动态SQL展开绑定。其中动态SQL这类具体动态输入参数,那些输入参数和APIUSB定义中的输入展开统计数据态射。同时SQL语句查询的输出结果和APIUSB定义的输出字段展开态射。
如果动态SQL是插入或更新类,同样也能通过参数化变量方式展开统计数据态射和绑定操作。
和存储过程展开绑定
两个统计数据库的存储过程,前述即是两个方法函数,因此能将APIUSB定义的输入和输出和统计数据库存储过程的输入和输出展开态射绑定。
规则处理
在APIUSB合作开发过程中,能展开许多单纯的规则处理。具体如下表所示:
输入统计数据完整性校验
对输入统计数据展开完整性校验,其中主要包括场景的统计数据类型,长度,范围约束等,那些都是属于较为容易通过实用性展开同时实现的文本。
统计数据项间规则处理
能对多个统计数据项展开单纯规则处理,其中主要包括了场景的统计数据态射,统计数据丰富,统计数据截取等。那些这类也是在主流的现代ESB汇流排产品中都全力支持的文本。
自定义脚本语言
对API加速合作开发网络平台这类能作为低代码合作开发网络平台的两个子类,因此如果能够全力支持自定义脚本语言展开规则处理,那么整体扩展性和灵活性也会得到大幅度提升。
消息头和输出预留
对API合作开发网络平台发布的APIUSB,需要对输入消息头,输出的异常类型,异常编码,重要信息等字段展开提前约定。
在输入的消息头中往往主要包括了类似用户名,Token等用于访问安全校验的字段,也主要包括了类似路由,分页等有关扩展字段重要信息。对输出字段,需要对返回的异常类型,编码,异常重要信息等展开约定。特别是涉及到统计数据CUD操作的这时候,需要按约定的输出字段展开输出。
服务项目组合和编排
对API合作开发网络平台还能进一步提供服务项目组合和服务项目编排的能力。这个能力的同时实现也不适合放在API交换机来顺利完成,而是如果规划到API合作开发网络平台来同时实现。
服务项目组合编排是服务项目组合,服务项目组装等,希望通过服务项目编排能够顺利完成那些事情,而不是单纯的顺利完成单一服务项目的结构设计和合作开发。将要多个原子服务项目组合或组装在一起,最后形成两个新的服务项目并提供的能力。我们举例来说明下。
比如存在A,B,C五个原子服务项目,我们通过服务项目编排形成两个新的D服务项目。
五个原子服务项目全部是查询服务项目,希望组装两个新服务项目,一次返回A,B,C五个服务项目查询结果
这个即我们说的服务项目组合能力,比如我们能对合同基本重要信息查询,合同条款重要信息查询,合同执行重要信息查询五个基本原子服务项目展开组合,最后返回两个服务项目综合重要信息查询的服务项目,一次返回五个查询结果。
在这种场景下我们需要考虑查询结果是并行返回还是按层次返回即可。
二个查询类的原子服务项目,最后需要返回两个统计数据集关联查询的结果集
这个在微服务项目架构做了下层统计数据库拆分后经常会遇到,比如对物料基本重要信息查询,和采购订单明细查询是在两个独立的统计数据库独立服务项目提供。而我们希望返回的查询结果集是物料编码,名称,型号,单位,价格,采购数量的复合结果集。
这种场景下往往一般都是在前端功能合作开发的这时候展开组装,而前述上能考虑是否能在服务项目编排层化解这个难题,该难题写代码来化解容易,但是要做为可视化服务项目编排组态方式来做前述上有一定的难度。
对单个已有服务项目展开裁剪和丰富并形成两个新服务项目输出
这个暂时也将其纳入到服务项目编排的范畴,即仍然是输入服务项目,但是输出是提供了两个新服务项目。
即对单个已有的服务项目展开服务项目裁剪和丰富,比如对输出结果过滤掉许多统计数据项,对输入固定输入许多统计数据项等。那些单纯的服务项目裁剪,丰富,或单纯的统计数据切换能在服务项目编排的这时候顺利完成,并提供两个新服务项目。
对多个原子服务项目展开流程式的前后串接并形成服务项目提供
这个是我们经常看到的一种服务项目编排场景,即A,B,C五个服务项目直接展开编排,即A服务项目的输出直接变为B服务项目的输入,B服务项目的输出又变为C服务项目的输出。如果仅仅是上面假设的这样,那么这种流程式的服务项目编排仍然很单纯,也很容易去同时实现。
但是前述上的难点在于A服务项目的输出这类也需要作为C服务项目的输出,同时A,B服务项目的输出也可能是整体输出的一部分,这这类就加大了服务项目编排可视化结构设计的难度。
单一业务服务项目为主体服务项目,但是编排多个业务规则逻辑处理类服务项目
这也是经常会遇到的场景,比如我们在展开合同重要信息导入的这时候,首先要调用合同有效性校验服务项目,同时还有调用预算重要信息检查和扣减服务项目展开有关的完整性和业务规则校验。在那些校验顺利完成后再调用前述的合同重要信息导入服务项目,如果校验失败则直接返回失败结果。
这类服务项目编排往往也正是我们前述在展开前端功能合作开发这时候服务项目展开组装的逻辑。
多个导入服务项目组装为两个导入服务项目合并导入并形成两个新服务项目
这个场景前述上和场景1是对应的,既然多个服务项目能组合后形成组合结果返回,那么自然能将多个导入服务项目合并为两个导入服务项目,一次性的顺利完成统计数据导入。
比如有项目重要信息导入和项目WBS重要信息导入两个原子服务项目,那么我们就能提供两个新的项目重要信息导入服务项目,一次顺利完成项目基本重要信息和项目WBS重要信息的导入。
在那些场景里头能看到,前述上服务项目编排是服务项目串联,服务项目并联下的输入和输出合并,服务项目文本丰富和裁剪等常见场景。在两个理想的场景下,我们最希望同时实现的是两个业务功能点的同时实现完全能够通过服务项目编排可视化结构设计方式来顺利完成。
关于服务项目编排详细说明能参考下文:
从ESB服务项目组合编排到NetflixConductor微服务项目编排
源代码导出
对API加速合作开发网络平台,很难去同时实现复杂的业务规则编码。因此在存在复杂业务规则同时实现的这时候仍然是建议合作开发人员自己合作开发代码来顺利完成。因此整座网络平台如果提供源代码导出功能,导出的源代码如果直接能够编译通过,脱离API合作开发网络平台布署和运转。
对导出的源代码,考虑到后续API接口变更的场景,建议是对扩展部分展开约定。
比如两个国际标准的APIUSB服务项目同时实现方法,能在前后增加扩展处理。
//BeforeDo(); //ProcessAPI(); //AfterDo();这样在USB同时实现前可以展开额外的业务规则处理和完整性校验,在USB返回统计数据前还能对输出的统计数据进一步展开处理和加工。
微服务项目应用
能将多个第一类或多个APIUSB服务项目打包到两个微服务项目应用再展开布署和发布。因此在这里引入两个微服务项目集的概念,对微服务项目API展开打包处理。
打包顺利完成的微服务项目能导出为独立的JAR包展开布署,也能直接在API合作开发网络平台展开托管布署。对API合作开发网络平台这类如果对接到微服务项目运转网络平台。