#概述
#数据资源说明
- 数据资源是指校内各类信息系统在建设、使用过程中产生和累积的各类数据。由数据产生部门保障数据的完整性、准确性、时效性和可用性;由数据产生部门或其管理部门确定数据的密级及共享方式。
- 使用部门对从数据资源中获取的数据,只能按照申请时的使用用途用于本部门履行职责需要,不得直接或以改变数据形式等方式提供给第三方。
#数据资源申请
申请API接口,请通过数据资源申请流程 (opens new window)完成申请。
#数据资源API表述
- 数据资源API基于GraphQL协议 (opens new window),根据用户请求的GraphQL查询语句,服务端对GraphQL语法校验,权限鉴定,最后执行查询返回用户。
- 所有数据API接口使用统一的请求地址(GEThttps://graphql.sjtu.edu.cn/graphql),根据请求体中GraphQL查询语句不同,判断用户查询哪一个数据API。
- GraphQL语法说明已详细阐述了在数据API使用过程中会用到的相应配置。
#令牌获取
数据API采用欧宝app官方网站下载的OAuth认证服务完成API权限校验,获取令牌授权使用客户端凭据授予(Client Credentials Grant),授权scope为exchange_data。
#构造请求
#请求地址
- GEThttps://graphql.sjtu.edu.cn/graphql客户端exchange_data
#注意事项
所有数据资源API请求地址都为同一个,后续不再赘述
#请求参数
除了access_token无其他参数
#请求头
Content-Type: application/json;charset=UTF-8
#请求体
请求体中为对应API接口的GraphQL语句;key为query,value即为对应GraphQL语句
示例
请求体
{"query":"{ IDENTITY_AUTH_ACCOUNT(filter : {ACCOUNT_NO:{eq:\"zhangsan\"}}){ GUID ACCOUNT_NO ORGANIZE_ID } }"}
1
2
3
2
3
#返回数据
#状态码
HTTP响应状态代码指示特定HTTP请求是否已成功完成。状态代码由section 10 of RFC 2616
(opens new window)定义。在API响应中常见的状态码见下表。
状态码 | 描述 |
---|---|
200 OK | 请求成功 |
400 Bad Request | 请求错误(通常是参数错误) |
403 Forbidden | 拒绝请求(通常是鉴权失败) |
404 Not Found | 请求资源未找到(通常是url地址错误) |
405 Method Not Allowed | 请求的方法不被允许(通常是请求方法错误) |
503 Service Unavailable | 服务不可用(通常是API服务器因维护正在重启中或者停机中) |
#数据格式
返回数据统一json格式,key为API接口名称,value为数据列表
{"IDENTITY_AUTH_ACCOUNT":[{"GUID":"xxxx-xxx-xxxx-xxxx-xxxx","ACCOUNT_NO":"zhangsan","ORGANIZE_ID":"01000",}]}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
#通用结构
API的返回值的通用结构包含:
参数名 | 类型 | 描述 |
---|---|---|
errcode | int | 错误代码,返回0表示调用成功. |
data | object | 成功返回数据 |
errors | object[] | 可选,返回错误信息 |
total | int | 本次api接口返回的数据总数,通过分页查询时,可通过该参数来判断是否继续查询 |
示例
请求成功返回数据
HTTP/1.1200OKContent-Type:application/json;charset=UTF-8{ "errcode": 0, "data": { "IDENTITY_AUTH_ACCOUNT": [ { "GUID": "xxxx-xxx-xxxx-xxxx-xxxx", "ACCOUNT_NO": "zhangsan", "SCBJ": "N" } ] }, "errors": null, "total": 1 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
示例
请求错误返回数据,当用户鉴权失败时,http响应状态码返回403
HTTP/1.1403OKContent-Type:application/json;charset=UTF-8{ "errcode": 1002, "data": null, "errors": [ { "message": "The interface has no access permission." } ], "total": 0 }
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
#错误代码
API错误代码表
错误代码 | 错误名称 | 错误说明 |
---|---|---|
0 | 成功 | |
-1 | API接口异常 | 未捕捉异常,可能数据库连接等因素导致 |
1000 | 请求API接口超时 | 规定时间接口未响应,将返回如下错误 |
1001 | GRAPHQL解析错误 | GraphQL语法错误 |
1002 | 权限验证失败 | The interface has no access permission. |
1003 | 系统内部异常 | 根据不同异常捕捉,返回相应错误信息 |
1004 | API接口访问限制 | 针对部分设置API每日访问次数限制的,当超过访问次数,将返回如下错误 |