开发门户
新数据模型设计
有若干个接口的实现方式、通讯层协议(调用方式)、业务协议不同,但功能、出参入参等完全一致,从这些接口中可以抽象出一个接口的元数据。
分析
1、使用koca平台开发的项目,大多有自己的返回格式,每种项目的返回格式都不一致。studio需要兼容他们的返回格式。
2、使用koca平台的项目中,有使用bex开发的,也有自己原生实现的。一个接口,通过bex实现与不通过bex实现,指向的应该是同一个接口的元数据。
3、dubbo、http(rest)、webservice等调用方式,对应的可以是同一个接口元数据,新的数据模型要支持存储此类接口调用方式的数据。
4、接口的参数也存在元数据概念。不同接口中的同名参数,可能指向的是同一个字段。如:登录接口的用户id和用户增删改查接口的用户id,实际意义上是同一个字段,它们的参数类型、长度、校验规则等都完全一致。
接口数据模型
新的接口数据模型从三个维度来切入
业务层协议
在服务配置。通过给服务配置业务协议,可以规定该服务下的接口都需要支持该协议。
业务协议包含接口的返回参数格式、参数的标准化库,可能还有需要遵循的命名规则。
可在业务协议中配置需要遵循的规则,规则可在标准化模块中制定。
举例:koca,FS2.0
通讯层协议
在接口配置,用于描述接口支持的通讯协议调用方式。koca已经支持的必须有。
可指定接口支持的调用方式,可填写接口在各种调用方式下的参数属性值、请求头信息。
同一个接口可以具备多种调用方式,每种调用方式之间的数据相互隔离。
举例:webservice、http(rest)、dubbo等
实现
在接口配置。实现主要是为了区分bex接口与普通接口。
同一个接口,可以有多种实现;每一种实现下,又可以有多种调用方式。
原生实现下,没有特殊的参数需要配置。
bex实现下,接口的不同调用方式的参数由系统自动生成,用户不可修改。而原生实现的接口,其通讯层协议的数据可随意修改。
某个bex接口的api属性值为queryCode。那么其http调用的请求路径为:/api/queryCode,该值由系统生成,不可被用户修改。
举例:bex实现,原生实现,kbss实现
三种维度的关系
一个接口的某个版本为例,列出几种表现形式:
BEX接口http调用 | 原生http调用接口 | FS2.0平台bex接口http调用 | BEX接口dubbo调用 | |
---|---|---|---|---|
通信层协议 | http | http | http | dubbo |
业务层协议 | KOCA | 无 | FS2.0 | KOCA |
实现方式 | Bex | 原生 | Bex | Bex |
接口说明 | 常见的koca-bex加bex-web的开发模式 | 不依赖koca。部分koca组件为此类实现 | FS2.0基于KOCA开发,有自己的返回格式、接口命名规则等 | koca-bex加bex-dubbo。 |
调用说明 | post请求,json格式数据 | post、get、put、delete等请求类型,数据格式可为json或form-data等 | post请求,json格式数据。与bex一致 | 客户端使用invokeBex方法调用服务端bex接口 |
备注 |
bex接口可转化为http的接口,以下是对比:
bex的http调用 | 原生http | |
---|---|---|
请求类型 | post | post、get、put、delete等 |
接口参数 | json格式数据 | json、form-data、url参数、header参数、xml |
接口路由 | bex根路径+api | 自定义,无限制 |
接口代码 | 自定义,无限制 | 自定义,无限制 |
接口名称 | 自定义,无限制 | 自定义,无限制 |
… |
可以将bex接口转化为其他协议实现的接口,但是其他实现的接口不一定可以转化为bex接口。
功能区分
studio提供的所有功能都会根据接口的实现和调用协议进行区分。
如用例管理仅可适用于http调用的接口,bex-xml生成仅适用于bex实现接口。excel的导入导出仅适用于bex实现的接口
修改方向
- 在服务支持配置业务协议
- 原接口协议–>接口实现
- 在接口实现下,添加新层级,接口通讯协议(调用方式)
- 参数推荐值功能迁移至标准化模块内(预计两个版本实现)