top
关闭

开发者登录

数据交换规范

前言

当前缺乏教育管理信息系统的标准,造成了极大的数据冗余和资源浪费,难以实现资源共享与数据交换。而仅仅对数据进行标准化,并不能从根本上解决不同系统之间数据交换的问题。本规范依据我国教育管理信息系统之间互操作的解决方案——教育管理信息系统互操作框架(EMIF)建立。本规范是针对数据提供方和数据使用方所制定的技术规范,旨在建立数据交换的标准,使框架内的所有系统在进行数据层整合时,要实现这些规范,并严格按照规范进行数据交换。

 

第三方开发者注册

开发者通过慧教云开放平台注册账号,上传审核所需的材料后,平台管理员会审核资料,审核通过后即成为平台开发者。

 

数据服务申请

开发者申请数据服务前需先注册应用,审核通过后会获取系统分配的appID和appKey,这两个参数将作为鉴权依据在数据服务交互过程使用(在4.1获取访问凭证环节会用到)。

开发者使用账号登录开放平台,进入管理中心订阅自己所需的数据服务,可以根据过滤选项过滤不需要的数据。数据服务订阅申请通过管理员审核后会返回订阅服务编码(会在4.2中用到),开发者需妥善保存该编码。

目前提供了六种数据服务,就能通过API消费对应的报文。

 

代理程序开发

4.1 获取接口访问凭证

根据开放平台开放的getaccesstoken接口获取数据服务的访问token(需要注册应用时返回的appID和appKey)。

4.1.1 接口描述

开发者调用平台接口的第一步,访问令牌是开发者使用数据服务的凭证,通过访问令牌开发者可以使用自身权限下的数据服务

4.1.2 前置条件

4.1.3 请求说明

url http://ip:port/apigateway/getaccesstoken
协议 Post
格式 Json
是否需要鉴权
请求数限制
接口方向 第三方应用>开放平台


4.1.4 请求参数

序号 字段名 约束 类型 长度 说明
1 appid 必选 String 64 应用ID
2 timestamp 必选 String 时间戳
3 keyinfo 必选 String 对APPID、APPKEY、Timestamp进行sha1-hamc运算,加密串为APPID和APPKEY及Timestamp字符串相连,以APPKEY为加密参数; Php使用的签名函数:hash_hmac,hash_algos参数值为“sha1”


4.1.5 
返回参数

序号 字段名 约束 类型 长度 说明
1
retCode 必选 String 10 返回码
2 retDesc 必选 String 返回码描述
3 tokenInfo 必选 JSON 返回的token对象信息
3.1 validtime 必选 String 32 返回token有效期
3.2 platformCode 可选 String 10 所属平台编码
3.3 appKey 必选 String 32 应用Key
3.4 userId 必选 String 32 用户编码
3.5 appId 必选 String 32 应用ID
3.6 token 必选 String 32 访问令牌
3.7 id 必选 String 32 应用主键


4.1.6 
接口示例

请求参数:

{

"appid":"5736915E311EA64DEA******",

"keyinfo":"E4AA972000C1262169743C******",

"timestamp":"1458282******"

}

返回值:

{

"tokenInfo": {

"validtime": "14670914******",

"platformCode": "",

"appkey": "8583C30ED82CFC4169C4******",

"userId": "AP93******",

"appId": "B1901B73D882387798AA5******",

"token": "77b117c4069e4f74b2434******",

"id": "5736915E311EA64DEA49547******"

},

"retCode": "000000",

"retDesc": "获取Token成功。"

}


4.2 
代理程序开发 

开发者使用数据交换 RESTful API 即可进行数据的订阅和发布。

4.2.1 数据订阅

4.2.1.1 异步API调用

订阅数据请求地址:
http://datacenterapi.huijiaoyun.com/dataCenterApi/api/subscription

传参说明:

字段名 数据类型 说明
serviceCode String 服务码
token String token值
isTest int 是否在测试环境测试(0:正式环境 1:测试环境)


4.2.1.2 同步URL推送方式

        数据交换中心使用httpPost的方式,在需要时,将用户订阅的数据提交到各个应用或者子系统中。应用或者子系统只需要参考本规范实例程序,开发对数据交换中心提供 的标准表单处理程序即可。


状态码以及错误码

应用或者子系统返回数据交换中心的http状态码和提示信息,常见有以下一些

http status
说明
200 服务器成功接收数据交换中心请求的数据
400 数据交换中心发出的请求数据有误
500 应用或者子系统内部错误

正常情况,返回结果为空,httpstatus设置为200;只有当状态码为400时,应用或者子系统才返回出错信息。例如

{

  "timestamp": 1491444025030,

  "status": 400,

  "error": "INVALID REQUEST",

  "message": "用户发出的请求有错误,服务器没有进行新建或修改数据的操作。",

  "path": "/xxx"

}


url请求示例

post    http://example.com/api/xxxxx

[

  {

    "id":"157a5c1cad834cb7835379b38a1ab852",

    "isTest":0,

    "obj":  

    {

      "areaCode":"420112",

      "cityCode":"420100",

     "orgaCage":"0",

      "orgaCode":"F6C68AAFA3BA437CE040007F01001D3D",

      "orgaId":"F6C68AAFA3B9437CE040007F01001D3D",

      "orgaName":"凌云小学",

      "orgaType":"3",

      "parentOrgaId":"F6C68AAFA38F437CE040007F01001D3D",

      "platCode":"888888",

      "provinceCode":"420000",

      "status":"0"

    },

    "operatorType":1,

    "platCode":"888888"

  },

{

  "id":"157a5c1cad834cb7835379b38a1ab852",

    "isTest":0,

    "obj":  

    {

      "areaCode":"420112",

      "cityCode":"420100",

     "orgaCage":"0",

      "orgaCode":"F6C68AAFA3BA437CE040007F01001D3D",

      "orgaId":"F6C68AAFA3B9437CE040007F01001D3D",

      "orgaName":"凌云小学",

      "orgaType":"3",

      "parentOrgaId":"F6C68AAFA38F437CE040007F01001D3D",

      "platCode":"888888",

      "provinceCode":"420000",

      "status":"0"

    },

    "operatorType":1,

    "platCode":"888888"

  }

]

具体报文的内容格式(obj)查看详细的报文说明文档

字段 内容
id 数据交换平台的主键id(后期比对数据)
isTest 0- 正式的数据  1-测试数据
obj 交换报文的内容(机构数据,用户)
operatorType 操作类型  1- 新增 2-修改 3-删除
platCode 来源编码


4.2.2 数据发布

发布数据请求地址:
http://datacenterapi.huijiaoyun.com/dataCenterApi/api/publish

传参说明:

字段名 数据类型 说明
serviceCode String 服务码
messageList String 需要发布的报文
isTest int 是否在测试环境测试(0:正式环境 1:测试环境)


messageList
示例:

[

 {

  "obj": {

          "id": "F6C68AC1640C437CE040007F01001D3D",

          "classCode": "zlaryex7",

          "className": "五年级(1)班",

          "classType": "1",

          "foundTime": "2014-04-11",

          "grade": "3",

          "gradeClass": "1",

          "graduationTime": "2018",

          "orgaId": "d561316acd66458fa0a073c9d0d0a577",

          "status": "1",

          "studyPhase": "1",

           "platCode": "eduYun"

          },

  "operatorType": "1"


  }

]


4.2.3
错误响应

错误响应格式:

当用户发布或订阅数据出错时,数据交换平台会返回给用户一个text/xml 格式的消息体。


示例:

<Error>

<Code>illlegalFieldValue</Code>

<Message>非法的字段类型,长度,或值</Message>

<desc>null</desc>

<returnTime>2016-09-19 00:00:00</returnTime>

</Error>


字段名 数据类型 说明
Code String 错误码
Message String 错误码对应的解释
desc String 错误详情
returnTime Date 返回时间


错误码表:
 

错误码 错误描述
dataCenterServiceException 数据交换系统后台异常
dataCenterAccessDeny 服务码无效
wrongJsonFormMsg 所发报文非JSON ARRAY格式
illlegalFieldValue 非法的字段类型,长度,或值


建立数据同步日志 

对于数据的提供方和使用方,要为数据的发布和订阅分别建立数据同步日志,为用户对数据有效性和完整性检查提供方便。

数据日志主要是记录第三方用户在发布/订阅过程中,发布/订阅的总量,失败的总量,以及失败的原因

发布/订阅日志的数据标准如下:

 

属性 类型 长度 描述
ID号 VARCHAR2 32 唯一标识
服务码 VARCHAR2 32 审核通过后得到的服务码
单笔总条数 NUMBER 3 单笔批次的总条数
更新时间 TIMESTAMP 20 最近一次发布的时间
状态位 NUMBER 1 1:成功 2:失败
失败原因 REASON 1 来自于调用数据交换API返回的XML信息