• 功能说明

    数据源服务是通过数据源的配置以及查询信息的配置,完成数据源到接口的转化,查询条件为接口请求信息,查询结果为接口的响应信息。

    此处数据源可简单理解为数据库,可通过接口平台的数据源接口查询对应数据源中的数据。

    当前版本功能只支持三类主流关系型数据库:MySQL、Oracle、SqlServer

    已配置启用的数据源接口,可以通过配置选择在服务启动时预加载数据库连接池:

    hzero.interface.datasource-start-init: true
    

    服务接口配置

    功能入口: 接口平台 > 服务注册 > 新建

    1. 新建数据源服务

    如上图所示,新建接口前需要先建一个数据源服务, 数据源服务和普通的服务的区别在于 服务类别 选择数据源。并去除部分配置项,如服务认证等。

    2. 新建接口

    上图为编辑完点击上线之后的展示,接口只有上线完(正常状态)才能被调用,基础属性方面,数据源接口相较普通接口,省去了部分配置,多出了详细配置、字段信息、参数列表三个大项。

    详细配置:

    属性列表:

    映射查询结果的字段信息

    列表字段说明:

    参数列表:

    映射查询请求的查询参数到数据源的查询条件,配置了的查询条件才会从请求的 requestParamMap 中识别,分页信息除外( pagesize )

    可以通过勾选上面的字段信息,自动添加参数信息行

    列表字段说明:

    接口使用

    具体的调用与普通的平台接口调用没有区别,参数需要放到请求报文的 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
    }