“成绩云接口开发文档”的版本间的差异
(→新增用户) |
Chenjiajie(讨论 | 贡献) |
||
(未显示3个用户的61个中间版本) | |||
第66行: | 第66行: | ||
;<span style="font-size:15px;">接口说明</span> | ;<span style="font-size:15px;">接口说明</span> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求URL:'''[apiBaseUrl]'''/queryUsers | + | 请求URL:'''[apiBaseUrl]'''/queryUsers<br/> |
请求参数:<br/> | 请求参数:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
第104行: | 第104行: | ||
| style="width:200px; text-align:center;" | 描述 | | style="width:200px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
− | | | + | |账号 |
|- | |- | ||
|name | |name | ||
第116行: | 第116行: | ||
|角色数组 | |角色数组 | ||
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
|学号。要求同一个学校内唯一 | |学号。要求同一个学校内唯一 | ||
第129行: | 第129行: | ||
|- | |- | ||
|class | |class | ||
− | | | + | |string |
− | | | + | |班别名称 |
|} | |} | ||
第137行: | 第137行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_01", |
− | " | + | "studentId": "20190101", |
"name": "刘备", | "name": "刘备", | ||
"gender": "男", | "gender": "男", | ||
"grade": 10, | "grade": 10, | ||
− | "class": 1, | + | "class": "1", |
"roleList": [ | "roleList": [ | ||
"学生" | "学生" | ||
第151行: | 第151行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_06", |
"name": "单福", | "name": "单福", | ||
"roleList": [ | "roleList": [ | ||
第159行: | 第159行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "parent_01", |
"name": "费曼", | "name": "费曼", | ||
"roleList": [ | "roleList": [ | ||
第174行: | 第174行: | ||
;<p style="font-size:15px;">接口说明</p> | ;<p style="font-size:15px;">接口说明</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求URL: '''[apiBaseUrl]'''/queryUsers | + | 请求URL: '''[apiBaseUrl]'''/queryUsers<br/> |
请求参数: | 请求参数: | ||
{| class="wikitable" | {| class="wikitable" | ||
第212行: | 第212行: | ||
| style="width:300px; text-align:center;" | 描述 | | style="width:300px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
− | | | + | |账号 |
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
|学号。要求同一个学校内唯一 | |学号。要求同一个学校内唯一 | ||
第233行: | 第233行: | ||
|- | |- | ||
|class | |class | ||
− | | | + | |string |
− | | | + | |班别名称 |
|} | |} | ||
第241行: | 第241行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_01", |
− | " | + | "studentId": "20190101", |
"name": "刘备", | "name": "刘备", | ||
"gender": "男", | "gender": "男", | ||
"grade": 10, | "grade": 10, | ||
− | "class": 1 | + | "class": "1" |
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_02", |
− | " | + | "studentId": "20190102", |
"name": "关羽", | "name": "关羽", | ||
"gender": "男", | "gender": "男", | ||
"grade": 11, | "grade": 11, | ||
− | "class": 2 | + | "class": "2" |
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_03", |
− | " | + | "studentId": "20190103", |
"name": "张飞", | "name": "张飞", | ||
"gender": "男", | "gender": "男", | ||
"grade": 12, | "grade": 12, | ||
− | "class": 3 | + | "class": "3" |
} | } | ||
] | ] | ||
第274行: | 第274行: | ||
此接口由成绩云向第三方发起请求,获取管理员用户列表。 | 此接口由成绩云向第三方发起请求,获取管理员用户列表。 | ||
;<p style="font-size:15px;">接口说明</p> | ;<p style="font-size:15px;">接口说明</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryUsers | + | 请求url: '''[apiBaseUrl]'''/queryUsers<br/> |
请求参数: | 请求参数: | ||
{| class="wikitable" | {| class="wikitable" | ||
第312行: | 第312行: | ||
| style="width:150px; text-align:center;" | 描述 | | style="width:150px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
− | | | + | |账号 |
|- | |- | ||
|name | |name | ||
第325行: | 第325行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_07", |
"name": "陈大文" | "name": "陈大文" | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_08", |
"name": "张伟" | "name": "张伟" | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_09", |
"name": "杨红" | "name": "杨红" | ||
} | } | ||
第347行: | 第347行: | ||
此接口由成绩云向第三方发起请求,获取教师用户列表。 | 此接口由成绩云向第三方发起请求,获取教师用户列表。 | ||
;<p style="font-size:15px;">接口说明</p> | ;<p style="font-size:15px;">接口说明</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryUsers | + | 请求url: '''[apiBaseUrl]'''/queryUsers<br/> |
请求参数: | 请求参数: | ||
{| class="wikitable" | {| class="wikitable" | ||
第385行: | 第385行: | ||
| style="width:150px; text-align:center;" | 描述 | | style="width:150px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
− | |教师的账户 | + | |教师的账户 |
|- | |- | ||
|name | |name | ||
第402行: | 第402行: | ||
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_04", |
"name": "孔明" | "name": "孔明" | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_05", |
"name": "郭嘉" | "name": "郭嘉" | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_06", |
"name": "单福" | "name": "单福" | ||
} | } | ||
第420行: | 第420行: | ||
此接口由成绩云向第三方发起请求,获取家长用户列表。 | 此接口由成绩云向第三方发起请求,获取家长用户列表。 | ||
;<p style="font-size:15px;">接口说明</p> | ;<p style="font-size:15px;">接口说明</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryUsers | + | 请求url: '''[apiBaseUrl]'''/queryUsers<br/> |
请求参数: | 请求参数: | ||
{| class="wikitable" | {| class="wikitable" | ||
第458行: | 第458行: | ||
| style="width:180px; text-align:center;" | 描述 | | style="width:180px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
− | | | + | |账号 |
|- | |- | ||
|name | |name | ||
第476行: | 第476行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "account": "parent_01", |
"name": "费曼", | "name": "费曼", | ||
"studentList": [ | "studentList": [ | ||
第486行: | 第486行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "parent_02", |
"name": "图灵", | "name": "图灵", | ||
"studentList": [ | "studentList": [ | ||
第494行: | 第494行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "parent_03", |
"name": "香侬", | "name": "香侬", | ||
"studentList": [ | "studentList": [ | ||
第513行: | 第513行: | ||
接口方向:<code>第三方</code>→<code>成绩云</code><br/> | 接口方向:<code>第三方</code>→<code>成绩云</code><br/> | ||
请求url: https://chengjiyun.com/vendor-api/addUser?platform='''[platform]'''&orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> | 请求url: https://chengjiyun.com/vendor-api/addUser?platform='''[platform]'''&orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> | ||
− | + | URL参数说明(并非所有角色都支持全部参数):<br/> | |
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
第550行: | 第550行: | ||
| style="width:350px; text-align:center;" | 描述 | | style="width:350px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
|是 | |是 | ||
− | | | + | |账号 |
|- | |- | ||
|roleList | |roleList | ||
|array | |array | ||
|是 | |是 | ||
− | | | + | |角色(支持管理员、教师、学生) |
|- | |- | ||
|name | |name | ||
第565行: | 第565行: | ||
|姓名 | |姓名 | ||
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
|否 | |否 | ||
第581行: | 第581行: | ||
|- | |- | ||
|class | |class | ||
− | | | + | |string |
|否 | |否 | ||
− | | | + | |班别名称 |
|} | |} | ||
第592行: | 第592行: | ||
[ | [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_01", |
"name": "刘备", | "name": "刘备", | ||
− | "class": 2, | + | "class": "2", |
"roleList": [ | "roleList": [ | ||
"管理员", | "管理员", | ||
第601行: | 第601行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_06", |
"name": "单福", | "name": "单福", | ||
"gender": "男", | "gender": "男", | ||
− | + | "roleList": [ | |
"教师", | "教师", | ||
] | ] | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "student_01", |
"name": "费曼", | "name": "费曼", | ||
− | + | "grade": 7, | |
− | " | + | "class": "1", |
+ | "roleList": [ | ||
+ | "教师", | ||
] | ] | ||
} | } | ||
第624行: | 第626行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
} | } | ||
</pre> | </pre> | ||
第634行: | 第636行: | ||
请求方式:<code>POST(Content-Type:application/json)</code> <br/> | 请求方式:<code>POST(Content-Type:application/json)</code> <br/> | ||
接口方向:<code>第三方</code>→<code>成绩云</code><br/> | 接口方向:<code>第三方</code>→<code>成绩云</code><br/> | ||
− | 请求url: https://chengjiyun.com/vendor-api/deleteUser?orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> | + | 请求url: https://chengjiyun.com/vendor-api/deleteUser?platform='''[platform]'''&orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> |
URL参数说明:<br/> | URL参数说明:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
第642行: | 第644行: | ||
| style="width:100px; text-align:center;" | 是否必填 | | style="width:100px; text-align:center;" | 是否必填 | ||
| style="width:300px; text-align:center;" | 描述 | | style="width:300px; text-align:center;" | 描述 | ||
+ | |- | ||
+ | |platform | ||
+ | |string | ||
+ | |是 | ||
+ | |平台ID | ||
|- | |- | ||
|orgId | |orgId | ||
第667行: | 第674行: | ||
| style="width:350px; text-align:center;" | 描述 | | style="width:350px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
|是 | |是 | ||
− | | | + | |账号 |
|} | |} | ||
第690行: | 第697行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
} | } | ||
</pre> | </pre> | ||
第700行: | 第707行: | ||
请求方式:<code>POST(Content-Type:application/json)</code> <br/> | 请求方式:<code>POST(Content-Type:application/json)</code> <br/> | ||
接口方向:<code>第三方</code>→<code>成绩云</code><br/> | 接口方向:<code>第三方</code>→<code>成绩云</code><br/> | ||
− | 请求url: https://chengjiyun.com/vendor-api/updateUser?orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> | + | 请求url: https://chengjiyun.com/vendor-api/updateUser?platform='''[platform]'''&orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> |
URL参数说明:<br/> | URL参数说明:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
第708行: | 第715行: | ||
| style="width:100px; text-align:center;" | 是否必填 | | style="width:100px; text-align:center;" | 是否必填 | ||
| style="width:300px; text-align:center;" | 描述 | | style="width:300px; text-align:center;" | 描述 | ||
+ | |- | ||
+ | |platform | ||
+ | |string | ||
+ | |是 | ||
+ | |平台ID | ||
|- | |- | ||
|orgId | |orgId | ||
第733行: | 第745行: | ||
| style="width:350px; text-align:center;" | 描述 | | style="width:350px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |account |
|string | |string | ||
|是 | |是 | ||
− | | | + | |账号 |
|- | |- | ||
|name | |name | ||
第743行: | 第755行: | ||
|姓名 | |姓名 | ||
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
|否 | |否 | ||
第759行: | 第771行: | ||
|- | |- | ||
|class | |class | ||
+ | |string | ||
+ | |否 | ||
+ | |班别名称 | ||
+ | |- | ||
+ | |status | ||
|int | |int | ||
|否 | |否 | ||
− | | | + | |账号状态。可不携带该属性,代表不更新用户状态;若携带该属性,0代表禁用状态,1代表活跃状态。 |
+ | |- | ||
|} | |} | ||
第770行: | 第788行: | ||
[ | [ | ||
{ | { | ||
− | " | + | "account": "zhiwei_01", |
"name": "刘备", | "name": "刘备", | ||
− | "class": 2 | + | "class": "2", |
+ | "status": 1 | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "zhiwei_06", |
"name": "单福", | "name": "单福", | ||
− | "gender": "男" | + | "gender": "男", |
+ | "status": 0 | ||
}, | }, | ||
{ | { | ||
− | " | + | "account": "parent_01", |
"name": "费曼" | "name": "费曼" | ||
}, | }, | ||
第792行: | 第812行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
} | } | ||
</pre> | </pre> | ||
第800行: | 第820行: | ||
成绩云向第三方平台发起请求,查询班级任教信息。 | 成绩云向第三方平台发起请求,查询班级任教信息。 | ||
<p style="font-size:15px;">'''接口说明'''</p> | <p style="font-size:15px;">'''接口说明'''</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryClassStatus | + | 请求url: '''[apiBaseUrl]'''/queryClassStatus<br/> |
'''请求参数''': | '''请求参数''': | ||
{| class="wikitable" | {| class="wikitable" | ||
第842行: | 第862行: | ||
|- | |- | ||
|class | |class | ||
− | | | + | |string |
− | | | + | |班别名称 |
|- | |- | ||
|headTeacher | |headTeacher | ||
|string | |string | ||
|班主任的账户 ID | |班主任的账户 ID | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|courseTeacherList | |courseTeacherList | ||
第870行: | 第886行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
"year": 2018, | "year": 2018, | ||
"grade": 10, | "grade": 10, | ||
− | "class": 1, | + | "class": "1", |
"headTeacher": "zhiwei_04", | "headTeacher": "zhiwei_04", | ||
− | |||
"courseTeacherList": { | "courseTeacherList": { | ||
"语文": "zhiwei_04", | "语文": "zhiwei_04", | ||
第887行: | 第902行: | ||
"year": 2018, | "year": 2018, | ||
"grade": 10, | "grade": 10, | ||
− | "class": 2, | + | "class": "2", |
"headTeacher": "zhiwei_05", | "headTeacher": "zhiwei_05", | ||
− | |||
"courseTeacherList": { | "courseTeacherList": { | ||
"语文": "zhiwei_04", | "语文": "zhiwei_04", | ||
第906行: | 第920行: | ||
请求方式:<code>GET</code> <br/> | 请求方式:<code>GET</code> <br/> | ||
接口方向:<code>第三方</code>→<code>成绩云</code><br/> | 接口方向:<code>第三方</code>→<code>成绩云</code><br/> | ||
− | 请求URL: https://chengjiyun.com/vendor-api/ | + | 请求URL: https://chengjiyun.com/vendor-api/updateClassStatus?platform='''[platform]'''&orgId='''[orgId]'''×tamp='''[timestamp]'''&sign='''[sign]'''<br/> |
URL参数说明:<br/> | URL参数说明:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
第914行: | 第928行: | ||
| style="width:100px; text-align:center;" | 是否必填 | | style="width:100px; text-align:center;" | 是否必填 | ||
| style="width:300px; text-align:center;" | 描述 | | style="width:300px; text-align:center;" | 描述 | ||
+ | |- | ||
+ | |platform | ||
+ | |string | ||
+ | |是 | ||
+ | |平台ID | ||
|- | |- | ||
|orgId | |orgId | ||
第928行: | 第947行: | ||
|string | |string | ||
|是 | |是 | ||
− | | | + | |签名,只对orgId和timestamp签名,不用对POST数据内容签名。详见附录[https://chengjiyun.com/wiki/index.php?title=%E6%88%90%E7%BB%A9%E4%BA%91%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明] |
|} | |} | ||
第936行: | 第955行: | ||
成绩云向第三方平台发起请求,获取考试列表。 | 成绩云向第三方平台发起请求,获取考试列表。 | ||
;<span style="font-size:15px;">接口说明</span> | ;<span style="font-size:15px;">接口说明</span> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求URL: '''[apiBaseUrl]'''/queryExam | + | 请求URL: '''[apiBaseUrl]'''/queryExam<br/> |
返回格式:<code>Content-Type:application/json</code><br/> | 返回格式:<code>Content-Type:application/json</code><br/> | ||
请求参数:<br/> | 请求参数:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | style=" | + | | style="text-align:center;" | 参数 |
− | | style=" | + | | style="text-align:center;" | 类型 |
− | | style=" | + | | style="text-align:center;" | 是否必填 |
− | | style=" | + | | style="text-align:center;" | 描述 |
|- | |- | ||
|orgId | |orgId | ||
第968行: | 第987行: | ||
| style="width:140px; text-align:center;" | 参数 | | style="width:140px; text-align:center;" | 参数 | ||
| style="width:100px; text-align:center;" | 类型 | | style="width:100px; text-align:center;" | 类型 | ||
− | | style="width:100px; text-align:center;" | | + | | style="width:100px; text-align:center;" | 是否必填 |
| style="width:300px; text-align:center;" | 描述 | | style="width:300px; text-align:center;" | 描述 | ||
|- | |- | ||
|examId | |examId | ||
|string | |string | ||
− | | | + | |是 |
|考试ID | |考试ID | ||
|- | |- | ||
|title | |title | ||
|string | |string | ||
− | | | + | |是 |
|考试标题 | |考试标题 | ||
|- | |- | ||
第985行: | 第1,004行: | ||
|是 | |是 | ||
|年级(可取值1,2,3,4,5,6,7,8,9,10,11,12) | |年级(可取值1,2,3,4,5,6,7,8,9,10,11,12) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
第997行: | 第1,011行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
"examId": "233", | "examId": "233", | ||
"title": "考试标题", | "title": "考试标题", | ||
− | "grade": 11 | + | "grade": 11 // 年级值11表示高二 |
− | + | ||
}, | }, | ||
{ | { | ||
"examId": "234", | "examId": "234", | ||
"title": "考试标题", | "title": "考试标题", | ||
− | "grade": | + | "grade": 12 // 年级值12表示高三 |
− | + | ||
} | } | ||
] | ] | ||
第1,018行: | 第1,030行: | ||
成绩云向第三方平台发起请求,获取单次考试详细成绩数据。 | 成绩云向第三方平台发起请求,获取单次考试详细成绩数据。 | ||
;<span style="font-size:15px;">接口说明</span> | ;<span style="font-size:15px;">接口说明</span> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryExamDetail | + | 请求url: '''[apiBaseUrl]'''/queryExamDetail<br/> |
返回格式:<code>Content-Type:application/json</code><br/> | 返回格式:<code>Content-Type:application/json</code><br/> | ||
请求参数:<br/> | 请求参数:<br/> | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | style=" | + | | style="text-align:center;" | 参数 |
− | | style=" | + | | style="text-align:center;" | 类型 |
− | | style=" | + | | style="text-align:center;" | 是否必填 |
− | | style=" | + | | style="text-align:center;" | 描述 |
|- | |- | ||
|orgId | |orgId | ||
第1,057行: | 第1,069行: | ||
| style="width:180px; text-align:center;" | 描述 | | style="width:180px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
− | | | + | |学生学号 |
|- | |- | ||
|scores | |scores | ||
第1,071行: | 第1,083行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "studentId": "20180101", |
"scores": { | "scores": { | ||
"语文": 120, | "语文": 120, | ||
第1,084行: | 第1,096行: | ||
"政治": 78, | "政治": 78, | ||
"历史": 85, | "历史": 85, | ||
− | "地理": 83 | + | "地理": 83 |
} | } | ||
}, | }, | ||
{ | { | ||
− | " | + | "studentId": "20180102", |
"scores": { | "scores": { | ||
"语文": 118, | "语文": 118, | ||
第1,099行: | 第1,111行: | ||
</pre> | </pre> | ||
− | === <p style="background:#999a9c;padding:8px 12px;color:#ffffff;display:inline-block;"> | + | === <p style="background:#999a9c;padding:8px 12px;color:#ffffff;display:inline-block;">查询单次考试小题分科目列表</p> === |
成绩云向第三方平台发起请求,获取考试小题分列表。 | 成绩云向第三方平台发起请求,获取考试小题分列表。 | ||
;<span style="font-size:15px;">接口说明</span> | ;<span style="font-size:15px;">接口说明</span> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryQuestionList | + | 请求url: '''[apiBaseUrl]'''/queryQuestionList<br/> |
返回格式:<code>Content-Type:application/json</code><br/> | 返回格式:<code>Content-Type:application/json</code><br/> | ||
请求参数:<br/> | 请求参数:<br/> | ||
第1,158行: | 第1,170行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": | "data": | ||
{ | { | ||
第1,173行: | 第1,185行: | ||
成绩云向第三方平台发起请求,获取单次考试某一科目小题分试卷结构。 | 成绩云向第三方平台发起请求,获取单次考试某一科目小题分试卷结构。 | ||
<p style="font-size:15px;">'''接口说明'''</p> | <p style="font-size:15px;">'''接口说明'''</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryQuestionStructure | + | 请求url: '''[apiBaseUrl]'''/queryQuestionStructure<br/> |
'''请求参数''': | '''请求参数''': | ||
{| class="wikitable" | {| class="wikitable" | ||
第1,223行: | 第1,235行: | ||
|题号 | |题号 | ||
|- | |- | ||
− | | | + | |answerType |
|enum("主观题","客观题") | |enum("主观题","客观题") | ||
|否 | |否 | ||
第1,238行: | 第1,250行: | ||
|卷别 | |卷别 | ||
|- | |- | ||
− | | | + | |group |
|string | |string | ||
|是 | |是 | ||
| 选做题分组 | | 选做题分组 | ||
|- | |- | ||
− | | | + | |questionType |
|string | |string | ||
|是 | |是 | ||
第1,263行: | 第1,275行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
"number": "1", | "number": "1", | ||
− | " | + | "answerType": "客观题", |
"score": 5, | "score": 5, | ||
"scroll": "一卷", | "scroll": "一卷", | ||
− | " | + | "group": "A1", |
− | " | + | "questionType": "基础选择", |
"knowledge": "语文基础知识", | "knowledge": "语文基础知识", | ||
"ability": "掌握" | "ability": "掌握" | ||
第1,277行: | 第1,289行: | ||
{ | { | ||
"number": "2", | "number": "2", | ||
− | " | + | "answerType": "主观题", |
"score": 10, | "score": 10, | ||
"scroll": "二卷", | "scroll": "二卷", | ||
− | " | + | "group": null, |
− | " | + | "questionType": "现代文阅读", |
"knowledge": null, | "knowledge": null, | ||
"ability": null | "ability": null | ||
第1,293行: | 第1,305行: | ||
成绩云向第三方平台发起请求,获取单次考试某一科目小题分所有学生分数。 | 成绩云向第三方平台发起请求,获取单次考试某一科目小题分所有学生分数。 | ||
<p style="font-size:15px;">'''接口说明'''</p> | <p style="font-size:15px;">'''接口说明'''</p> | ||
− | 请求方式:<code> | + | 请求方式:<code>POST</code> <br/> |
− | 请求url: '''[apiBaseUrl]'''/queryQuestionScore | + | 请求url: '''[apiBaseUrl]'''/queryQuestionScore<br/> |
'''请求参数''': | '''请求参数''': | ||
{| class="wikitable" | {| class="wikitable" | ||
第1,338行: | 第1,350行: | ||
| style="width:280px; text-align:center;" | 描述 | | style="width:280px; text-align:center;" | 描述 | ||
|- | |- | ||
− | | | + | |studentId |
|string | |string | ||
|否 | |否 | ||
− | | | + | |学生学号 |
|- | |- | ||
|scores | |scores | ||
第1,353行: | 第1,365行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
− | " | + | "studentId": "20210101", |
"scores": { | "scores": { | ||
"1": 5, | "1": 5, | ||
第1,365行: | 第1,377行: | ||
}, | }, | ||
{ | { | ||
− | " | + | "studentId": "20210102", |
"scores": { | "scores": { | ||
"1": 5, | "1": 5, | ||
第1,435行: | 第1,447行: | ||
{ | { | ||
"code": 0, | "code": 0, | ||
− | "msg": " | + | "msg": "成功", |
"data": [ | "data": [ | ||
{ | { | ||
"userName": "成绩云", | "userName": "成绩云", | ||
− | " | + | "studentId": 101, |
} | } | ||
] | ] |
2022年6月27日 (一) 10:00的最后版本
目录
前言
本文档针对需要对接成绩云系统的平台而编写。
接入成绩云的平台需要先联系知未科技研发,获取2个基本参数:平台ID[platform],平台密钥[key]。这两个参数也可以反过来向知未科技提供。
然后提供一个接口URL前缀[apiBaseUrl],后面所有的接口都基于这个前缀。凡是接口URL是https://chengjiyun.com前缀的,说明这个接口由第三方向成绩云发起请求。而如果接口URL前缀是[apiBaseUrl],说明接口是由成绩云向第三方发起请求。
为每一所接入学校向知未提供一个[orgId]。
单点登录
单点登录流程说明
1. 第三方平台内添加成绩云访问单点登录链接,点击链接访问成绩云。
2. 成绩云接收来自第三方的的访问参数,查询站点信息。(成绩云是分学段建立站点的;如果一个学校包含了小学、初中、高中,那么成绩云中将分别建立小学、初中、高中三个站点。成绩云分学段建立的站点将使用第三方平台给定的学校唯一标识建立站点关联关系)。
3. 第三方平台给定的学校没有包含多个学段,则开始验证用户信息。
4. 第三方平台给定的学校包含多个学段,成绩云将会显示选择站点页面。选择站点页面将列举出访问用户可选择的站点。用户选择对应的站点后,则开始验证用户信息。
接口说明
请求方法:GET
接口方向:第三方
→成绩云
PC版登录URL:https://chengjiyun.com/portal/[platform]?orgId=[orgId]&account=[account]×tamp=[timestamp]&sign=[sign]
移动版登录URL:https://chengjiyun.com/mobile-portal/[platform]?orgId=[orgId]&account=[account]×tamp=[timestamp]&sign=[sign]
访问参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校ID |
account | string | 是 | 账号 |
type | string | 否 | 学段,可选值为“小学”、“初中”、“高中”。如果存在多学段且不填此字段,系统会让用户选择。 |
timestamp | int | 是 | 时间戳(Unixtime),有效时长7200秒 |
sign | string | 是 | 签名, 详见附录签名参数sign生成说明 |
查询用户
查询所有用户列表
此接口由成绩云向第三方发起请求,获取用户列表。
成绩云仅需要4种用户角色:学生,教师,管理员,家长。
此接口是下面其它接口的超集,后面的接口通过role参数查询子集。当指定了role参数后,返回结果中,可忽略用户的角色属性。
- 接口说明
请求方式:POST
请求URL:[apiBaseUrl]/queryUsers
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
role | string | 否 | 角色。可选值为“学生”、“教师”、“管理员、“家长” |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
account | string | 账号 |
name | string | 姓名 |
roleList | array | 角色数组 |
studentId | string | 学号。要求同一个学校内唯一 |
gender | string | 性别,可选“男”、“女”或“”(空字符串) |
grade | int | 年级,7表示初一,10表示高一,以此类推。 |
class | string | 班别名称 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "account": "zhiwei_01", "studentId": "20190101", "name": "刘备", "gender": "男", "grade": 10, "class": "1", "roleList": [ "学生" ] }, { "account": "zhiwei_06", "name": "单福", "roleList": [ "管理员", "教师" ] }, { "account": "parent_01", "name": "费曼", "roleList": [ "家长" ] }, ] }
查询学生列表
此接口由成绩云向第三方发起请求,获取学生用户列表。
接口说明
请求方式:POST
请求URL: [apiBaseUrl]/queryUsers
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
role | string | 是 | 填“学生” |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
account | string | 账号 |
studentId | string | 学号。要求同一个学校内唯一 |
name | string | 姓名 |
gender | string | 性别,可选“男”、“女”或“”(空字符串) |
grade | int | 年级 |
class | string | 班别名称 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "account": "zhiwei_01", "studentId": "20190101", "name": "刘备", "gender": "男", "grade": 10, "class": "1" }, { "account": "zhiwei_02", "studentId": "20190102", "name": "关羽", "gender": "男", "grade": 11, "class": "2" }, { "account": "zhiwei_03", "studentId": "20190103", "name": "张飞", "gender": "男", "grade": 12, "class": "3" } ] }
查询管理员列表
此接口由成绩云向第三方发起请求,获取管理员用户列表。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryUsers
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
role | string | 是 | 填“管理员” |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
account | string | 账号 |
name | string | 姓名 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "account": "zhiwei_07", "name": "陈大文" }, { "account": "zhiwei_08", "name": "张伟" }, { "account": "zhiwei_09", "name": "杨红" } ] }
查询教师列表
此接口由成绩云向第三方发起请求,获取教师用户列表。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryUsers
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
role | string | 是 | 填“教师” |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
account | string | 教师的账户 |
name | string | 姓名 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "account": "zhiwei_04", "name": "孔明" }, { "account": "zhiwei_05", "name": "郭嘉" }, { "account": "zhiwei_06", "name": "单福" } ] }
查询家长列表
此接口由成绩云向第三方发起请求,获取家长用户列表。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryUsers
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
role | string | 是 | 填“家长” |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
account | string | 账号 |
name | string | 姓名 |
studentList | array | 家长关联的学生 ID数组 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "account": "parent_01", "name": "费曼", "studentList": [ "stu_01" ] }, { "account": "parent_02", "name": "图灵", "studentList": [ "stu_02", "stu_03" ] }, { "account": "parent_03", "name": "香侬", "studentList": [ "stu_04", "stu_05", "stu_06" ] } ] }
管理用户
新增用户
第三方平台新增用户信息后,主动推送新增的用户到成绩云,通知成绩云新增相应用户。
- 接口说明
请求方式:POST(Content-Type:application/json)
接口方向:第三方
→成绩云
请求url: https://chengjiyun.com/vendor-api/addUser?platform=[platform]&orgId=[orgId]×tamp=[timestamp]&sign=[sign]
URL参数说明(并非所有角色都支持全部参数):
参数 | 类型 | 是否必填 | 描述 |
platform | string | 是 | 平台ID |
orgId | string | 是 | 学校ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名,只对orgId和timestamp签名,不用对POST数据内容签名。详见附录签名参数sign生成说明 |
POST数据结构参数:
参数 | 类型 | 是否必填 | 描述 |
account | string | 是 | 账号 |
roleList | array | 是 | 角色(支持管理员、教师、学生) |
name | string | 是 | 姓名 |
studentId | string | 否 | 学号。要求同一个学校内唯一 |
gender | string | 否 | 性别,可选“男”、“女”或“”(空字符串) |
grade | int | 否 | 年级,7表示初一,10表示高一,以此类推。 |
class | string | 否 | 班别名称 |
请求样例
POST数据如下:
[ { "account": "zhiwei_01", "name": "刘备", "class": "2", "roleList": [ "管理员", "教师", ] }, { "account": "zhiwei_06", "name": "单福", "gender": "男", "roleList": [ "教师", ] }, { "account": "student_01", "name": "费曼", "grade": 7, "class": "1", "roleList": [ "教师", ] } ]
返回样例
{ "code": 0, "msg": "成功", }
删除用户
第三方平台删除用户信息后,主动推送删除的用户到成绩云,通知成绩云进行删除。
- 接口说明
请求方式:POST(Content-Type:application/json)
接口方向:第三方
→成绩云
请求url: https://chengjiyun.com/vendor-api/deleteUser?platform=[platform]&orgId=[orgId]×tamp=[timestamp]&sign=[sign]
URL参数说明:
参数 | 类型 | 是否必填 | 描述 |
platform | string | 是 | 平台ID |
orgId | string | 是 | 学校ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名,只对orgId和timestamp签名,不用对POST数据内容签名。详见附录签名参数sign生成说明 |
POST数据结构参数:
参数 | 类型 | 是否必填 | 描述 |
account | string | 是 | 账号 |
请求样例
POST数据如下:
[ "zhiwei_01", "zhiwei_06", "parent_01" ]
返回样例
{ "code": 0, "msg": "成功", }
更新用户
第三方平台修改用户信息后,主动推送被修改用户到成绩云进行修改。
- 接口说明
请求方式:POST(Content-Type:application/json)
接口方向:第三方
→成绩云
请求url: https://chengjiyun.com/vendor-api/updateUser?platform=[platform]&orgId=[orgId]×tamp=[timestamp]&sign=[sign]
URL参数说明:
参数 | 类型 | 是否必填 | 描述 |
platform | string | 是 | 平台ID |
orgId | string | 是 | 学校ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名,只对orgId和timestamp签名,不用对POST数据内容签名。详见附录签名参数sign生成说明 |
POST数据结构参数(并非所有角色都支持全部参数的修改,例如班别信息对家长角色是无效的):
参数 | 类型 | 是否必填 | 描述 |
account | string | 是 | 账号 |
name | string | 否 | 姓名 |
studentId | string | 否 | 学号。要求同一个学校内唯一 |
gender | string | 否 | 性别,可选“男”、“女”或“”(空字符串) |
grade | int | 否 | 年级,7表示初一,10表示高一,以此类推。 |
class | string | 否 | 班别名称 |
status | int | 否 | 账号状态。可不携带该属性,代表不更新用户状态;若携带该属性,0代表禁用状态,1代表活跃状态。 |
请求样例
POST数据如下:
[ { "account": "zhiwei_01", "name": "刘备", "class": "2", "status": 1 }, { "account": "zhiwei_06", "name": "单福", "gender": "男", "status": 0 }, { "account": "parent_01", "name": "费曼" }, ]
返回样例
{ "code": 0, "msg": "成功", }
查询班级任教信息列表
成绩云向第三方平台发起请求,查询班级任教信息。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryClassStatus
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
year | int | 入学年份 |
grade | int | 年级 |
class | string | 班别名称 |
headTeacher | string | 班主任的账户 ID |
courseTeacherList | object | 科目任教信息. 以科目的中文名为属性名, 教师的账户 ID 为 属性值的结构对象
例如: { "语文":"zhiwei_04", "数学":"zhiwei_05", "英语":"zhiwei_06" } |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "year": 2018, "grade": 10, "class": "1", "headTeacher": "zhiwei_04", "courseTeacherList": { "语文": "zhiwei_04", "数学": "zhiwei_05", "英语": "zhiwei_06" } }, { "year": 2018, "grade": 10, "class": "2", "headTeacher": "zhiwei_05", "courseTeacherList": { "语文": "zhiwei_04", "数学": "zhiwei_05", "英语": "zhiwei_06" } } ] }
通知更新班级任教信息列表
第三方平台修改班级任教相关的数据后,需要主动通知成绩云重新读取第三方平台的数据更新。此接口无需传入更新的数据,只需通知成绩云即可。
- 接口说明
请求方式:GET
接口方向:第三方
→成绩云
请求URL: https://chengjiyun.com/vendor-api/updateClassStatus?platform=[platform]&orgId=[orgId]×tamp=[timestamp]&sign=[sign]
URL参数说明:
参数 | 类型 | 是否必填 | 描述 |
platform | string | 是 | 平台ID |
orgId | string | 是 | 学校ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名,只对orgId和timestamp签名,不用对POST数据内容签名。详见附录签名参数sign生成说明 |
查询考试成绩
查询考试列表
成绩云向第三方平台发起请求,获取考试列表。
- 接口说明
请求方式:POST
请求URL: [apiBaseUrl]/queryExam
返回格式:Content-Type:application/json
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 是否必填 | 描述 |
examId | string | 是 | 考试ID |
title | string | 是 | 考试标题 |
grade | int | 是 | 年级(可取值1,2,3,4,5,6,7,8,9,10,11,12) |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "examId": "233", "title": "考试标题", "grade": 11 // 年级值11表示高二 }, { "examId": "234", "title": "考试标题", "grade": 12 // 年级值12表示高三 } ] }
查询单次考试总分成绩
成绩云向第三方平台发起请求,获取单次考试详细成绩数据。
- 接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryExamDetail
返回格式:Content-Type:application/json
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校ID |
examId | string | 是 | 考试ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 描述 |
studentId | string | 学生学号 |
scores | array | 科目成绩 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "studentId": "20180101", "scores": { "语文": 120, "数学": 118, "英语": 121, "物理": 89, "化学": 78, "生物": 88, "政治": 78, "历史": 85, "地理": 83 } }, { "studentId": "20180102", "scores": { "语文": 118, "数学": 136, "英语": 98 } } ] }
查询单次考试小题分科目列表
成绩云向第三方平台发起请求,获取考试小题分列表。
- 接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryQuestionList
返回格式:Content-Type:application/json
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校ID |
examId | string | 是 | 考试ID |
timestamp | int | 是 | 时间戳(Unixtime),有效时长600秒 |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
参数 | 类型 | 是否允许为 null | 描述 |
examId | string | 否 | 考试ID |
courses | array | 否 | 有分析小题分的科目集合 |
返回样例
{ "code": 0, "msg": "成功", "data": { "examId": "233", "courses": [ "语文", "数学", ], } }
查询单次考试小题分试卷结构
成绩云向第三方平台发起请求,获取单次考试某一科目小题分试卷结构。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryQuestionStructure
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
examId | string | 是 | 考试 ID |
course | string | 是 | 科目的中文名 |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
下面参数的具体定义,请阅读理解 试卷结构
参数 | 类型 | 是否允许为 null | 描述 |
number | string | 否 | 题号 |
answerType | enum("主观题","客观题") | 否 | 类型 |
score | float | 否 | 满分值 |
scroll | enum("一卷","二卷") | 否 | 卷别 |
group | string | 是 | 选做题分组 |
questionType | string | 是 | 题型 |
knowledge | string | 是 | 知识点 |
ability | string | 是 | 能力 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "number": "1", "answerType": "客观题", "score": 5, "scroll": "一卷", "group": "A1", "questionType": "基础选择", "knowledge": "语文基础知识", "ability": "掌握" }, { "number": "2", "answerType": "主观题", "score": 10, "scroll": "二卷", "group": null, "questionType": "现代文阅读", "knowledge": null, "ability": null } ] }
查询单次考试小题分成绩
成绩云向第三方平台发起请求,获取单次考试某一科目小题分所有学生分数。
接口说明
请求方式:POST
请求url: [apiBaseUrl]/queryQuestionScore
请求参数:
参数 | 类型 | 是否必填 | 描述 |
orgId | string | 是 | 学校 ID |
examId | string | 是 | 考试 ID |
course | string | 是 | 科目的中文名 |
timestamp | int | 是 | 时间戳(Unixtime) |
sign | string | 是 | 签名。详见附录签名参数sign生成说明 |
返回参数:
下面参数的具体定义,请阅读理解 试卷结构
参数 | 类型 | 是否允许为 null | 描述 |
studentId | string | 否 | 学生学号 |
scores | hash | 是 | 题号: 分数。分数为 null 时, 表示学生缺答 |
返回样例
{ "code": 0, "msg": "成功", "data": [ { "studentId": "20210101", "scores": { "1": 5, "2": 8, "3.a": 4.5, "3.b": 3 } }, { "studentId": "20210102", "scores": { "1": 5, "2": 2, "3.a": null, "3.b": 4 } } ] }
常见问题
附录
签名参数sign生成说明
第一步:
对传入的参数按照键名排序
第二步:
使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
第三步:
在stringA最后拼接上“&key=[平台密钥]”得到stringSignTemp字符串,并对stringSignTemp进行MD5运算
第四步:
得到最终请求字符串sign
PHP签名算法示例:
//$key 平台密钥 function sign($data, $key) { ksort($data); // 正向排序 $key_str = urldecode(http_build_query($data)); // 连接字符串 $key_str .= '&key=' . $key; // 拼接key return md5($key_str); } $data = array( 'orgId'=>'testapi', 'account'=> 'zhiwei_01', 'type'=> '高中', 'timestamp' => time(), ); $sign = sign($data, $key);
注意:一般接口会有一个timestamp参数,如无特别说明,timestamp的有效时间为600秒(登录接口有效时常为7200秒),超过该时长请求无效,以降低受到重放攻击的风险。此时长在实际使用中可能会做出调整,请尽可能地使用实时时间。
返回结果
参数名称 | 类型 | 描述 |
code | int | 公共返回码,详见附录公共返回码 |
msg | string | 返回信息 |
data | object | 返回的查询或操作数据,数据可能是对象或数组。具体根据每个API而定。 |
返回示例:
{ "code": 0, "msg": "成功", "data": [ { "userName": "成绩云", "studentId": 101, } ] }
公共返回码
开发者每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 返回码如下:
返回码(code) | 消息(msg) |
0 | 成功 |
10001 | 未知错误 |
10002 | 服务器忙 |
10003 | 服务器无响应 |
10004 | 操作超时 |
10005 | 网络异常 |
10006 | IP地址无效或不匹配 |
10007 | 操作异常 |
10008 | 操作无效 |
10009 | 数据库操作异常 |
20001 | 没有匹配的数据 |
20002 | 数据无效 |
30001 | 接口不存在 |
30002 | 参数解析错误 |
30003 | 参数格式错误 |
30004 | 参数长度超出范围 |
30005 | 参数值内容错误 |
30006 | 验证失败 |
40001 | 用户账号不存在 |
40002 | 用户账号已经禁用 |