1. 开始使用
1.1. 一般约束
- 本文档仅适用于到梦空间开放平台的合作高校
- 接口协议:https
- 请求方式:post
- 批量查询数据接口重要说明:使用批量获取信息的接口时每次返回的数据限制500条,第一次查询不需要填写updateTime,第二次开始,需要把上一次调用接口返回数据中取到数据的最大updateTime值(使用接口返回的原值不要做任何修改,返回数据按照updateTime升序,只需要取最后一条数据的值即为最大值),依次循环调用接口获取全部数据,直至没有数据返回。
1.2. 接口调用方式
到梦空间提供 “中间库”请求接口地址
- 接口请求规则:https://ip:port/ [interface context]
- 线上环境请求接口地址:https://openapi.5idream.net
1.3. 请求参数
- 请求参数中分成两部分,一部分为我们称为公共请求参数(包括openId、token、sign_type、sign);另一部分为具体参数,存放在info_content中,JSON格式,这部分我们称为业务请求参数(请参考每个业务接口说明);
- 公共请求参数
字段名称 | 类型 | 长度 | 是否必填 | 字段说明 |
---|---|---|---|---|
openId | String | 50 | YES | 到梦空间发放给合作方的ID |
token | String | 50 | YES | 调用获取token(令牌)接口返回的值 |
sign_type | String | 10 | YES | 签名算法类型,目前支持MD5和验证签名 |
sign | String | 256 | NO | 签名值,详见请求签名说明 |
- 业务请求参数请参考各业务接口
字段名称 | 类型 | 字段说明 |
---|---|---|
info_content | String | 请求参数的集合(JSON串格式),最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照具体业务接入文档,签名后请将该字段值进行encode编码 |
1.4. 生成签名值(sign)
第三方和到梦空间交互的每一次请求都必须签名
签名所需要的数据:
数据项 | 说明 |
---|---|
info_content | 请求的URL参数,所有签名的源数据都是未编码的数据 |
signSalt | 签名秘钥,由到梦空间生成并提供,并只在到梦空间和第三方之间共享,请勿泄露,调用接口时不需要提交这个参数。 |
签名过程如下:
筛选
获取请求参数中的info_content值。拼接
将info_content组合成参数=参数值的格式,并将md5_salt= signSalt连接到字符串最后端,此时生成的字符串为待签名字符串。 原值结构:info_content=$(info_content)& md5_salt= signSalt调用签名函数
使用各自语言对应的MD5签名函数对待签名字符串进行签名(生成为32位16进制字符串)。
拼接后的待签名字符串:
info_content={"studentId":"34914298"}&md5_salt=B644510FDE4FA5DA4E0A8F5E3E308BEC
MD5加密后字符串:
0DBBE658BE9C997244BDA6D0766A2CB8
1.5. 数据安全
出于对数据的安全性考虑,到梦空间提供https协议,进行网络传输。以防止被人截取。 所有接口返回data需要aes解密。 获取token接口的key需要aes加密。
字段名称 | 类型 | 长度 | 是否必填 | 字段说明 |
---|---|---|---|---|
aesKey | String | 256 | YES | aes加密的秘钥,用于调用接口加密参数或者解密接口返回值,请妥善保存,切勿泄露,非请求参数,不要在调用接口时提交 |
aesIv | String | 256 | YES | aes加密的偏移量,用于调用接口加密参数或者解密接口返回值,请妥善保存,切勿泄露,非请求参数,不要在调用接口时提交 |
1.6. 成功响应数据格式
{
"data": "VzhO49EXeFvuhP+KShc8doV6",
"code" : "100",
"success" : true,
"msg": desc_comment
}
将返回数据中的data字段使用AES解密得到返回值。(AES128加密模式:CBC,填充模式:PKCS5Padding,秘钥、iv偏移量、data是Base64编码的加密字符串)
1.7. 异常响应数据格式
{
"code" : code_value,
"success" : false,
"msg": value
}
1.8. 批量操作数据校验异常响应数据格式
#如下是批量同步课程信息操作,数据校验异常会在异常数据内增加一个error提示
{
"code": "-10010",
"success": false,
"msg": "批量操作数据校验不通过",
"data": [{
"error": "教务处课程ID没有传。",
"className": "java编程之道",
"outClassId": "",
"teacherName": "赵老师",
"term": 1,
"year": "2020"
}, {
"error": "教务处课程ID没有传。学年没有传。",
"className": "java编程之道2",
"outClassId": "",
"teacherName": "赵老师",
"term": 2,
"year": ""
}]
}
1.9. 数据调用顺序
- 通过 "获取token" 拿到访问时需要的token;
- 业务请求时再把token放到请求头再传入业务接口。
1.10. 公共响应代码
- 以下为公共接口响应代码,接口特有的响应代码在各个接口中具体说明。
编码 | 字段说明 | 可采取行动 |
---|---|---|
100 | 返回成功 | 继续接下来的业务流程 |
500 | 服务端错误 | 联系到梦空间排查 |
110009 | token令牌不对 | token不存在或已失效(过期) |
110010 | 无效签名值 | 检查签名方法 |