# 接口协议

协议:http / https

方法:POST

内容类型:'Content-Type': 'application/json; charset=utf-8'

# API 接口

提供了3种调用服务的 API 接口,分别是:api、api2、api3

如果创建系统时选择了签名算法,那么 api 接口需要进行签名,签名的计算方法,见【签名算法】章节

# API 接口的参数与服务参数的关系

API 请求参数中的 body 为 注册服务时的请求参数

API 响应参数 与 注册服务时的响应参数一致

# api

接口:http://ip:port/api

api 请求的数据结构

{
	"appid": "系统appid",
	"sys_name": "系统名称",
	"mdl_name": "模块名称",
	"svc_name": "服务名称",
	"body": "服务的数据对象",
	"sign": "签名字符串,如果不签名,则传空字符串"
}
1
2
3
4
5
6
7
8

示例:

{
	"appid": "9d6ab21aab7c491a80256fbc9180c4f8",
	"sys_name": "prj_c",
	"mdl_name": "mdl_test",
	"svc_name": "svc_test_query_function",
	"body": {
		"sys_head": {
			"usr_id": "",
			"org_id": "",
			"sys_id": "",
			"mdl_func_id": "",
			"login_key": ""
		},
		"data": {
			"sys_id": "",
			"mdl_func_id": "",
			"mdl_func_parent_id": "",
			"path": "",
			"component": "",
			"redirect": "",
			"name": "",
			"hidden": "",
			"icon": "",
			"isKeepAlive": "",
			"title": ""
		}
	},
    "sign":""
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

响应的数据结构

{
	"code": 0,
	"err_msg": "错误信息",
	"otl_exc": "otl错误信息",
	"data": "响应数据对象"
}
1
2
3
4
5
6

示例:

{
	"code": 0,
	"err_msg": "",
	"otl_exc": {
		"code": 0,
		"msg": "",
		"stm_text": "",
		"sqlstate": "",
		"var_info": ""
	},
	"data": [
		{
			"path": "",
			"name": "",
			"redirect": "",
			"component": "",
			"meta": {
				"title": "",
				"icon": ""
			},
			"children": [],
			"route_id": "",
			"parent_route_id": ""
		}
	]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# api2

接口:http://ip:port/api2

在 Headers 中设置 appid、sys-name、mdl-name、svc-name 和 sign,例如:

appid : "9d6ab21aab7c491a80256fbc9180c4f8"
sys-name : "prj_c"
mdl-name : "mdl_test"
svc-name : "svc_test_query_function"
sign : "签名字符串"
1
2
3
4
5

请求的body直接传服务的数据对象

由于采用了自定义头部,需要在 Access-Control-Allow-Headers 中加入 appid、sys-name、mdl-name、svc-name 和 sign,如: Access-Control-Allow-Headers=appid,sys-name,mdl-name,svc-name,sign

不建议采用此方式,有些浏览器对头部字段名称的命名有严格要求,从而引起接口调用失败。

请求的数据结构

{
    // 服务请求的数据对象
}
1
2
3

响应的数据结构

{
	"code": 0,
	"err_msg": "错误信息",
	"otl_exc": "otl错误信息",
	"data": "响应数据对象"
}
1
2
3
4
5
6

# api3

接口:http://ip:port/api3/:appid/:sys-name/:mdl-name/:svc-name?sign=

此方式使用 RESTful 路径参数,将 appid、sys-name、mdl-name、svc-name 和 sign 拼写到请求的 URL 中

注意:sys-name、mdl-name、svc-name 中如果有下划线 "_",需转成连接符 "-"

接口示例:http://ip:port/api3/9d6ab21aab7c491a80256fbc9180c4f8/prj-c/mdl-test/svc-test-query-route?sign=

请求的数据结构

{
    // 服务请求的数据对象
}
1
2
3

响应的数据结构

{
	"code": 0,                 // 返回码:0-表示服务调用正确;非0-表示错误
	"err_msg": "错误信息",
	"otl_exc": "otl错误信息",
	"data": "响应数据对象"
}
1
2
3
4
5
6

# 调用示例

在【注册服务】功能界面的左侧模块列表点击选择服务所在的模块,在右侧服务列表中找到要调用的服务,点操作列的【测试】按钮,打开服务测试界面,点击【增加测试用例】,之后点击URL栏右侧的【保存并测试】按钮,就可以直接调用服务,如图:

测试的 URL 默认的IP和端口是开发服务器的,也可以修改调用其他服务服务器的服务。

注意:这里请求参数中的 svc_name 在服务名称增加的后缀 @test,表示通过【测试功能】调用的服务,会绕过服务参数的签名;在实际调用服务的过程中,是不包含 @test 后缀的。