开发中心新数据接口设计分享

开发门户

新数据模型设计

有若干个接口的实现方式、通讯层协议(调用方式)、业务协议不同,但功能、出参入参等完全一致,从这些接口中可以抽象出一个接口的元数据。

分析

1、使用koca平台开发的项目,大多有自己的返回格式,每种项目的返回格式都不一致。studio需要兼容他们的返回格式。

2、使用koca平台的项目中,有使用bex开发的,也有自己原生实现的。一个接口,通过bex实现与不通过bex实现,指向的应该是同一个接口的元数据。

3、dubbo、http(rest)、webservice等调用方式,对应的可以是同一个接口元数据,新的数据模型要支持存储此类接口调用方式的数据。

4、接口的参数也存在元数据概念。不同接口中的同名参数,可能指向的是同一个字段。如:登录接口的用户id和用户增删改查接口的用户id,实际意义上是同一个字段,它们的参数类型、长度、校验规则等都完全一致。

接口数据模型

image-20210802164726857

新的接口数据模型从三个维度来切入

业务层协议

服务配置。通过给服务配置业务协议,可以规定该服务下的接口都需要支持该协议。

业务协议包含接口的返回参数格式、参数的标准化库,可能还有需要遵循的命名规则。

可在业务协议中配置需要遵循的规则,规则可在标准化模块中制定。

举例: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实现的接口

修改方向

  1. 在服务支持配置业务协议
  2. 原接口协议–>接口实现
  3. 在接口实现下,添加新层级,接口通讯协议(调用方式)
  4. 参数推荐值功能迁移至标准化模块内(预计两个版本实现)

感谢分享 :+1:

FS有相关的文档吗?