功能说明
数据源服务是通过数据源的配置以及查询信息的配置,完成数据源到接口的转化,查询条件为接口请求信息,查询结果为接口的响应信息。
此处数据源可简单理解为数据库,可通过接口平台的数据源接口查询对应数据源中的数据。
当前版本功能只支持三类主流关系型数据库:MySQL、Oracle、SqlServer
已配置启用的数据源接口,可以通过配置选择在服务启动时预加载数据库连接池:
hzero.interface.datasource-start-init: true
服务接口配置
功能入口: 接口平台
> 服务注册
> 新建
1. 新建数据源服务
如上图所示,新建接口前需要先建一个数据源服务, 数据源服务和普通的服务的区别在于 服务类别
选择数据源。并去除部分配置项,如服务认证等。
2. 新建接口
上图为编辑完点击上线之后的展示,接口只有上线完(正常状态)才能被调用,基础属性方面,数据源接口相较普通接口,省去了部分配置,多出了详细配置、字段信息、参数列表三个大项。
详细配置:
- 数据源名称:选择数据源,可选值在
开发管理
>数据源管理
>数据源设置
处维护,只能选择状态为启用且用途为接口平台
的数据源 - 数据源类型:数据源的类型,通过数据源名称的LOV带出
- 表达式类型:可选值为
SQL查询语句
和表或视图
- 用途说明:填写该数据源接口的用途或备注
- 表或视图名:当表达式类型选
表或视图
时展示,用于选择表名(会根据数据源的选择,加载数据源下的所有表名,选择表名之后会自动覆盖加载字段信息到字段信息列表) - SQL表达式:当表达式类型选
SQL查询语句
时展示,用于输入查询SQL - 解析按钮:当表达式类型选
SQL查询语句
时展示,点击触发SQL解析,解析 SQL表达式 输入框内的SQL,覆盖加载解析出来字段信息到字段信息列表
属性列表:
映射查询结果的字段信息
列表字段说明:
- 属性名:查询的字段名
- 字段类型:查询的字段类型
- 表达式: 预留,当前版本无用
- 排序号:查询结果的字段顺序
- 字段描述:字段描述
- 隐私级别:根据密级,查询结果对应的字段进行加密后生成响应信息
参数列表:
映射查询请求的查询参数到数据源的查询条件,配置了的查询条件才会从请求的 requestParamMap
中识别,分页信息除外( page
和 size
)
可以通过勾选上面的字段信息,自动添加参数信息行
列表字段说明:
-
参数名:查询条件的参数名,对应
requestParamMap
中的key -
参数类型:查询条件的参数类型
-
操作符:查询条件的操作符,对应sql中的操作符
-
绑定属性:查询参数对应的字段名
-
排序号:查询条件顺序
-
是否必填:该查询条件是否必须
-
默认值:当
requestParamMap
中没有该参数时,使用默认值填充
接口使用
具体的调用与普通的平台接口调用没有区别,参数需要放到请求报文的 requestParamMap
中
以上文配置的接口为例,查询hitf_interface表中,interfaceCode为 TEST0506的数据
HTTP请求:
POST /hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST0506&interfaceCode=TEST0506 HTTP/1.1
Host: hzeronb.saas.hand-china.com
Authorization: Bearer be7b7686-2667-445c-81f9-98b815687b2b
Content-Type: application/json
{
"requestParamMap": {
"interface_code": "TEST0506",
"page": 1
}
}
注意:查询结果默认分页,分页信息可以不传,默认分页 page
为 1,size
为10,page
值为1时表示第一页,page为1,size为5,表明只返回查询出来的前五条数据。若想查询出全部记录,将size设置大一点即可。
响应结果:
{
"apiInfo": null,
"body": null,
"headers": {},
"invokeKey": "4d9f4f51-cd18-4b33-8693-b5e7d7db83aa",
"mediaType": null,
"message": null,
"payload": {
"content": [
{
"created_by": 5043,
"creation_date": "2020-05-06 16:24:02",
"enabled_flag": true,
"interface_code": "TEST0506",
"interface_id": 1000894,
"interface_name": "TEST数据源接口",
"interface_server_id": 552,
"interface_url": null,
"last_update_date": "2020-05-07 14:37:36",
"last_updated_by": 5043,
"mapping_class": null,
"object_version_number": 7,
"publish_type": "REST",
"remark": null,
"request_header": null,
"request_method": null,
"soap_action": null,
"soap_version": null,
"status": "ENABLED",
"tenant_id": 0
}
],
"first": true,
"last": true,
"number": 0,
"numberOfElements": 1,
"pageable": "INSTANCE",
"size": 0,
"sort": {
"sorted": false,
"unsorted": true
},
"totalElements": 1,
"totalPages": 1
},
"status": "200",
"statusCode": "OK",
"statusCodeValue": 200
}
查询条件中操作符为IN时,传入的参数值为STRING形式,多个值用",“隔开:
POST /hitf/v1/rest/invoke?namespace=HZERO&serverCode=ZH0330&interfaceCode=sjs HTTP/1.1
Host: hzeronb.saas.hand-china.com
Authorization: Bearer acc17aed-ec3a-44b2-bbab-a1602e3d178d
Content-Type: application/json
{
"requestParamMap": {
"page": 1,
"size": 3,
"interface_id":"15,16,17"
}
}
响应结果:
{
"headers": {},
"body": null,
"status": "200",
"message": null,
"mediaType": null,
"payload": [
{
"interface_name": "数据消息消费DB配置列表",
"interface_url": "/v1/cons-db-configs",
"interface_id": 15
},
{
"interface_name": "批量修改数据消息消费DB配置",
"interface_url": "/v1/cons-db-configs",
"interface_id": 16
},
{
"interface_name": "数据消息消费租户配置列表",
"interface_url": "/v1/cons-tenant-configs",
"interface_id": 17
}
],
"apiInfo": null,
"invokeKey": "373c34b5-06b7-415f-9ca8-2b481ad85d17",
"statusCodeValue": 200,
"statusCode": "OK"
}
SQL类型的数据源接口
选择表达式类型的时候,也可选择查询SQL语句
,输入sql表达式后,点击解析,会自动带出与查询结果对应的的属性列表。参数列表为查询条件,在sql中已经包含,此处一般不必填写。
HTTP请求:
POST /hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST0506&interfaceCode=TEST05061710 HTTP/1.1
Host: hzeronb.saas.hand-china.com
Authorization: Bearer be7b7686-2667-445c-81f9-98b815687b2b
Content-Type: application/json
{
"requestParamMap": {
"page": 1,
"size": 3
}
}
注意:查询结果默认分页,分页信息可以不传,默认分页 page
为 1,size
为10,page
值为1时表示第一页,page为1,size为5,表明只返回查询出来的前五条数据。若想查询出全部记录,将size设置大一点即可。
响应结果:
{
"apiInfo": null,
"body": null,
"headers": {},
"invokeKey": "4d9f4f51-cd18-4b33-8693-b5e7d7db83aa",
"mediaType": null,
"message": null,
"payload": {
"content": [
{
"model_id": 10009
},
{
"model_id": 10011
},
{
"model_id": 10015
}
],
"first": true,
"last": true,
"number": 0,
"numberOfElements": 3,
"pageable": "INSTANCE",
"size": 0,
"sort": {
"sorted": false,
"unsorted": true
},
"totalElements": 3,
"totalPages": 1
},
"status": "200",
"statusCode": "OK",
"statusCodeValue": 200
}