后端API注册及管理

一、应用场景

物联云平台提供后端API接口的注册和管理功能。第三方应用可以将开发完成的API接口注册至物联云平台,由物联云平台的网关进行统一的鉴权和认证访问权限。

物联云平台支持两种注册后端API接口的方式。第一种为第三方应用通过应用签名(Signature)进行后端API注册,第二种为平台内部服务通过平台权限(AccessToken)进行后端API注册。如果平台同时接收到两种认证方式(请求头中同时包含Signature和AccessToken),则优先识别为平台内部服务注册。

  • 第三方应用注册到物联云平台,通过物联云平台网关进行鉴权。

  • 基于物联云平台开发的后端API接口,注册至物联云平台统一认证。

二、功能说明

前往物联云平台管理台【应用中心->API网关->服务管理】中,创建一个服务。记录已创建服务名称,用于后端API注册时,设置为对应API所归属的服务。

第三方应用通过应用签名注册:前往物联云平台管理台【应用中心->应用网关】中,创建一个应用系统类型的应用。记录已创建应用的Appid和AppSecret,用于签名算法(SHA256)。

平台内部服务通过平台权限注册:前往物联云平台管理【系统设置->平台访问授权】中,添加一个授权。记录已创建授权的AccessKeyId和AccessKeySecret,用于获取AccessToken。使用AccessToken进行后端API注册。

三、前提条件

  1. 已创建对应的服务。

  2. 应用签名注册,需要已创建对应的应用网关。

  3. 平台权限注册,需要已创建的对应的AccessToken。

四、关键流程

4.1 外部SAAS系统注册API

流程说明:

  • 首先,外部SAAS系统 从企业管理台获得 网关应用标识和应用秘钥 用作注册后端API必备条件。
  • 其次,外部SAAS系统 解析需要注册的后端API,并对需要注册的后端API利用 网关应用标识和应用秘钥 进行签名,从而向物联网中台发起 后端API注册 请求。
  • 最后,物联网中台接收到 后端API注册 请求进行一系列请求参数校验后,将注册的后端API定义为企业内部后端API,只能由所属企业进行访问。

img

4.2 后端API管理

流程说明:

  • 首先,**B端成员 **登录到物联网中台,获得物联网中台调用凭证以及刷新凭证。
  • 其次,B端成员 在企业管理台根据产品功能一次向物联网中台发起 查询后端API 或者 根据服务查询后端API列表 请求。
  • 最后,物联网中台接收到查询后端API请求后,依照**B端成员 **归属企业不同来圈定可查询的后端API范围,进而返回不同的后端API数据。

img

五、API列表

5.1 后端API管理

5.1.1 后端API注册

接口描述

注册后端API目前支持两种形式,第一为第三方SAAS服务利用应用签名进行后端API注册,第二平台内部服务利用平台权限进行后端API注册;优先识别内部服务注册,即是请求头同时传AccessToken和Signature会被认为是内部服务注册;API必须为同一个服务Service,service + path + method联合唯一。

请求方式

POST

请求地址

/v3/service/gateway-admin/apis/backend-registe

请求头

名称 必填 类型 备注
Signature false String 签名算法初步为SHA256(AppID+AppSecret+参数Body)
Access-Token false String 调用凭证
平台权限
Content-Type true String application/json
App-ID false String 应用标识

请求参数

名称 位置 必填 类型 备注
service body true String API归属服务
apis body true Array 后端API列表
apis.path body true String API路径
apis.method body true String API方法,枚举:
GET
POST
PUT
DELETE
apis.name body true String API名称
apis.timeout body true Int API调用超时时间 单位毫秒,最大值为30000毫秒
apis.allow_auths body true Array 允许的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
apis.role_auths body true Array 需要角色进行认证的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
apis.params body true Array 参数列表
apis.params.name body true String 参数名称,必须为大小写字母、数字、下划线组成,长度为1~64以内
apis.params.desc body false String 参数描述,长度为0~64
apis.params.location body true Int 参数位置,枚举
1:Query
2:Header
3:Body
4:Path
apis.params.type body true Int 参数类型,枚举
1:String
2:Int
3:Long
4:Double
5:Boolean
6:Array,location只能是3:Body
7:Object,location只能是3:Body
apis.params.required body true Boolean 是否必须
apis.response body true Object 接口响应示例
apis.response.type body true Int 接口响应格式,枚举
1: JSON
apis.response.success_sample body false String 成功响应示例,JSON字符串
apis.response.fail_sample body false String 失败响应示例,JSON字符串
apis.response.errors body false Array 错误列表,最多32个
apis.response.errors.code body false String 错误码
apis.response.errors.message body false String 错误信息

请求示例:

{
	"service": "event-service",
	"apis": [{
		"path": "/v1/service/events",
		"method": "POST",
		"name": "事件列表",
		"timeout": 20000,
		"allow_auths": [2, 4],
		"role_auths": [2],
		"params": [{
			"name": "name",
			"desc": "事件名称",
			"location": 3,
			"type": 1,
			"required": true
		}],
		"response": {
			"type": 1,
			"success_sample": "{\"name\":\"你好\"}",
			"fail_sample": "{\"name\":\"你好\"}",
			"errors": [{
				"code": "4001001",
				"message": "参数不合格"
			}]
		}
	}]
}

返回参数说明

名称 必填 类型 备注
status true Int HTTP状态码
code true Int 业务错误码
msg false String 业务错误信息
data false Object 业务数据
data.count true Int 后端API数量
data.list true Array 后端API列表
data.list.id true String 后端API标识
data.list.path true String 后端API路径
data.list.method true String 后端API路径

返回示例:

{
    "status": 200,
	"code": 200,
	"msg": "访问成功",
    "data": {
        "count": 1,
        "list": [{
            "id": "1234656",
            "path": "/v1/service/events",
            "method": "POST"
        }]
    }
}

错误码:

错误码 描述
4001001 请求数据字段验证不通过
40010001 请求数据字段验证不通过
4001002 请求数据必须字段不可为空
4031001 调用凭证权限被禁止访问
4031003 无效的调用凭证
4031002 需要调用凭证
4041001 接口不存在
5031001 系统错误
4031024 权限不足
40322001 签名错误
40022051 签名格式不正确
40022011 服务格式长度不正确
40022052 路径格式不正确
40022020 HTTP接口方法不正确
40022057 接口重复
40022053 API名称不正确
40022047 认证方式未知
40022048 返回类型未知
40022049 错误码达到上限
40022019 参数名称非法
40022055 参数位置未知
40022056 参数类型未知
40022042 参数类型与位置不匹配
40022054 后端参数重复

5.1.2 查询后端API

接口描述

企业成员根据后端API标识查询后端API信息。

  • 先从缓存中获取,如果有则直接返回
  • 缓存中没有则从数据库中获取,删除缓存中数据之后更新到缓存,缓存有效期为3小时+随机60秒
  • 如数据库中没有,则虚拟一个无效应用信息放入缓存中,有效期为30分钟+随机60秒。

请求方式

GET

请求地址

/v3/service/gateway-admin/apis/backends/{id}

请求头

名称 必填 类型 备注
Access-Token true String 调用凭证
企业成员
平台权限
Content-Type true String application/json

请求参数

名称 位置 必填 类型 备注
id path true String 后端API标识

请求示例:

{
}

返回参数说明

名称 必填 类型 备注
status true Int HTTP状态码
code true Int 业务错误码
msg false String 业务错误信息
data false Object 业务数据
data.id true String API标识
data.path true String API路径
data.method true String API方法,枚举:
GET
POST
PUT
DELETE
data.name true String API名称
data.timeout true Int API调用超时时间 单位毫秒,最大值为30000毫秒
data.service true String API归属服务
data.type true Int API拥有者类型,枚举
1: 平台类型服务
2: 企业类型服务
data.owner true String API拥有者标识
type为1时,固定为XLINK
type为2时,固定为企业标识
data.allow_auths true Array 允许的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
data.role_auths true Array 需要角色进行认证的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
data.params true Array 参数列表
apis.params.name true String 参数名称,必须为大小写字母、数字、下划线组成,长度为1~64以内
data.params.desc false String 参数描述,长度为0~64
data.params.location true Int 参数位置,枚举
1:Query
2:Header
3:Body
4:Path
data.params.type true Int 参数类型,枚举
1:String
2:Int
3:Long
4:Double
5:Boolean
6:Array,location只能是3:Body
7:Object,location只能是3:Body
data.params.required true Boolean 是否必须
data.response true Object 接口响应示例
data.response.type true Int 接口响应格式,枚举
1: JSON
data.response.success_sample false String 成功响应示例,JSON字符串
data.response.fail_sample false String 失败响应示例,JSON字符串
data.response.errors false Array 错误列表,最多32个
data.response.errors.code false String 错误码
data.response.errors.message false String 错误信息
data.create_time true String 创建时间,格式为2019-12-16T16:00:00.000Z
data.update_time false String 更新时间,格式为2019-12-16T16:00:00.000Z

返回示例:

{
	"status": 200,
	"code": 200,
	"msg": "访问成功",
	"data": {
		"id": "1234656",
		"path": "/v1/service/events",
		"method": "POST",
		"name": "事件列表",
		"timeout": 20000,
		"service": "event-service",
		"type": 1,
		"owner": "8123123",
		"allow_auths": [2],
		"role_auths": [2],
		"update_time": "2019-12-16T16:00:00.000Z",
		"create_time": "2019-12-16T16:00:00.000Z",
		"params": [{
			"name": "name",
			"desc": "参数-名称",
			"location": 3,
			"type": 1,
			"required": true
		}],
		"response": {
			"type": 1,
			"success_sample": "{\"name\":\"你好\"}",
			"fail_sample": "{\"name\":\"你好\"},
			"errors": [{
				"code": "4001001",
				"message": "参数不合格"
			}]
		}
	}
}

错误码:

错误码 描述
4001001 请求数据字段验证不通过
40010001 请求数据字段验证不通过
4001002 请求数据必须字段不可为空
4031001 调用凭证权限被禁止访问
4031003 无效的调用凭证
4031002 需要调用凭证
4041001 接口不存在
5031001 系统错误
4031024 权限不足
40022003 分组不存在

5.1.3 根据服务查询后端API列表

接口描述

企业成员根据服务列表查找后端API列表,企业可用的服务有企业下的服务以及平台服务。

请求方式

POST

请求地址

/v3/service/gateway-admin/services/{id}/apis

请求头

名称 必填 类型 备注
Access-Token true String 调用凭证
企业成员
平台权限
Content-Type true String application/json

请求参数

名称 位置 必填 类型 备注
offset body false Int 偏移量
limit body false Int 查询量
sort body false Object 排序字段
query body false Object 查询条件
query.logic body true String 当出现query时,此字段必填,条件逻辑关系, and 或 or
query.where body false Object 查询条件集合

请求示例:

{
    "offset": 0,
    "limit": 10,
    "sort": {
        "name": "desc"
    },
    "query": {
        "logic": "and",
        "where": {
            "name": {
                "$eq": "视频安防"
            },
            "desc": {
                "$in": ["452877796"]
            }
        }
    }
}

返回参数说明

名称 必填 类型 备注
status true Int HTTP状态码
code true Int 业务错误码
msg false String 业务错误信息
data false Object 业务数据
data.count false String 后端API总数
data.list false Array<Object> 后端API列表
data.list.id true String 后端API标识
data.list.path true String API路径
data.list.method true String API方法,枚举:
GET
POST
PUT
DELETE
data.list.name true String API名称
data.list.timeout true Int API调用超时时间 单位毫秒,最大值为30000毫秒
data.list.service true String API归属服务
data.list.type true Int API拥有者类型,枚举
1: 平台类型服务
2: 企业类型服务
data.list.owner true String API拥有者标识
type为1时,固定为XLINK
type为2时,固定为企业标识
data.list.allow_auths true Array 允许的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
data.list.role_auths true Array 需要角色进行认证的认证方式,枚举
67108864: APP签名
2: B端成员
4: C端用户
64: NULL认证
16777216: 外部认证
data.list.params true Array<Object> 参数列表
apis.list.params.name true String 参数名称,必须为大小写字母、数字、下划线组成,长度为1~64以内
data.list.params.desc false String 参数描述,长度为0~64
data.list.params.location true Int 参数位置,枚举
1:Query
2:Header
3:Body
4:Path
data.list.params.type true Int 参数类型,枚举
1:String
2:Int
3:Long
4:Double
5:Boolean
6:Array,location只能是3:Body
7:Object,location只能是3:Body
data.list.params.required true Boolean 是否必须
data.list.response true Object 接口响应示例
data.list.response.type true Int 接口响应格式,枚举
1: JSON
data.list.response.success_sample false String 成功响应示例,JSON字符串
data.list.response.fail_sample false String 失败响应示例,JSON字符串
data.list.response.errors false Array<Object> 错误列表,最多32个
data.list.response.errors.code false String 错误码
data.list.response.errors.message false String 错误信息
data.list.create_time true String 创建时间,格式为2019-12-16T16:00:00.000Z
data.list.update_time false String 更新时间,格式为2019-12-16T16:00:00.000Z

返回示例:

{
	"status": 200,
	"code": 200,
	"msg": "访问成功",
	"data": {
		"count": 1,
		"list": [{
			"id": "1234656",
			"path": "/v1/service/events",
			"method": "POST",
			"name": "事件列表",
			"timeout": 20000,
			"service": "event-service",
			"type": 1,
			"owner": "8123123",
			"allow_auths": [2],
			"role_auths": [2],
			"update_time": "2019-12-16T16:00:00.000Z",
			"create_time": "2019-12-16T16:00:00.000Z",
			"params": [{
				"name": "name",
				"desc": "参数-名称",
				"location": 3,
				"type": 1,
				"required": true
			}],
			"response": {
				"type": 1,
				"success_sample": "{\"name\":\"你好\"}",
				"fail_sample": "{\"name\":\"你好\"},
				"errors": [{
					"code": "4001001",
					"message": "参数不合格"
				}]
			}
		}]
	}
}

错误码:

错误码 描述
4001001 请求数据字段验证不通过
40010001 请求数据字段验证不通过
4001002 请求数据必须字段不可为空
4031001 调用凭证权限被禁止访问
4031003 无效的调用凭证
4031002 需要调用凭证
4041001 接口不存在
5031001 系统错误
4031024 权限不足
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题