局域网考试系统接口文档¶
单点登录¶
注:
1.接口地址的host部分请替换成您部署的ip+端口或者域名再使用。
2.code(权限码)在优考试系统的系统设置->开放平台设置处获取。
单点登录允许考生只在用户的系统上登录一次,点击试卷考试时不再需要再次登录, 例如用户A有公司自己的OA系统, 考生王二登录到公司的OA系统后, 在系统里点开始考试,这时王二就不再需要输入自己的账号,而是直接就进入考试了。
1、单点登录考试¶
单点登录考试允许用户考生直接在用户系统上点击就开始考试, 不再需要额外的身份认证, 接口如下:
请求
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.newStudentSSO&format=raw
请求数据
code=权限码&loginValue=登录字段的值&password=密码&eid=试卷ID
- code 每个账户唯一对应的验证码,string类型。
- loginValue 表示的是考生的登录值,比如说系统设置了使用手机登录,那么这里就是考生的手机号码。
- password 考生的密码,如果有的话;如果考生没有的话,这里留空
- eid 考生要做的试卷ID
登录成功后,系统会自动跳转到考试界面,且不需要再执行身份验证
2、单点登录考生后台¶
单点登录到考生后台和单点登录考试原理一样, 差别是不传eid参数或传0. 即:
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.newStudentSSO&format=raw&loginValue=13487361736&password=1294783&eid=0
系统判断eid为0时会自动跳转到考生后台界面
3、子管理员单点登录¶
子管理员单点登录管理后台, 接口如下:
请求
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.childAdminSSO&format=raw
请求数据
code=权限码&email=邮箱&password=密码
- code 每个账户唯一对应的验证码,string类型。
- email 子管理员邮箱,必填
- password 子管理员密码,必填
登录成功后,系统会自动跳转到管理后台
获取考生成绩¶
注:
1.接口地址的host部分请替换成您部署的ip+端口或者域名再使用。
2.code(权限码)在优考试系统的系统设置->开放平台设置处获取。
1、获取某一考生参与考试的记录¶
通过该接口,可以获取考生在某一份试卷下的考生成绩。
接口如下所示:
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.queryResults&format=raw
参数:
code=权限码&eid=试卷ID&loginValues=考生登录字段值&start=0&limit=30
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- eid 表示试卷ID
- loginValues 表示的是考生的登录值,可选参数,比如说系统设置了使用手机登录,那么这里就是考生的手机号码
- year 用于查询不同年份的数据,默认为当前年份 例:2022,可选参数
- start 用于数据量很大时的分页显示,表示分页的数据偏移, 默认为0, 可选参数
- limit 用于数据量很大时的分布显示,设置每页的数据显示数量,默认为30, 可选参数
该接口返回考生在这个试卷里的所有考试记录信息
[
{
"viewResult":"http://192.168.0.1:5858/viewresult/token",//查看详细考试详情的链接,有30分钟时间限制,超过30分钟后得重新获取链接
"score": 30,//考试得分,float类型
"startTime": 1539075728,//考生开始作答的时间戳,int类型,单位s(秒)
"endTime": 1539075828,//考生交卷的时间戳,int类型,单位s(秒)
"status": 1,//status 表示答卷状态,1表示正常交卷, 0正在考试中,2表示超时自动交卷,3表示被管理员强制交卷,4表示系统执行交卷
},
{
"viewResult":"http://192.168.0.1:5858/viewresult/token",//查看详细考试详情的链接,有30分钟时间限制,超过30分钟后得重新获取链接
"score": 32,//考试得分,float类型
"startTime": 1539075628,//考生开始作答的时间戳,int类型,单位s(秒)
"endTime": 1539075828,//考生交卷的时间戳,int类型,单位s(秒)
"status": 1,//status 表示答卷状态,1表示正常交卷, 0正在考试中,2表示超时自动交卷,3表示被管理员强制交卷,4表示系统执行交卷
},
]
2、获取参与考试的所有考试记录信息¶
如果没有指定 loginValues 的话, 则返回的是所有参与该试卷考试的考试记录数据
[
{
"viewResult":"http://192.168.0.1:5858/viewresult/token",//查看详细考试详情的链接,有30分钟时间限制,超过30分钟后得重新获取链接
"score": 30,//考试得分,float类型
"startTime": 1539075728,//考生开始作答的时间戳,int类型,单位s(秒)
"endTime": 1539075828,//考生交卷的时间戳,int类型,单位s(秒)
"loginValues": 19382,
"name": "王二"
},
{
"viewResult":"http://192.168.0.1:5858/viewresult/token",//查看详细考试详情的链接,有30分钟时间限制,超过30分钟后得重新获取链接
"score": 32,//考试得分,float类型
"startTime": 1539075628,//考生开始作答的时间戳,int类型,单位s(秒)
"endTime": 1539075828,//考生交卷的时间戳,int类型,单位s(秒)
"loginValues": 19310, //考生登录字段值
"name": "张三" //考生的姓名
},
]
3、获取试卷列表¶
试卷很多的情况下需要通过接口来动态获取试卷列表。接口如下:
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.getExams&format=raw
参数
code=权限码&start=0&limit=30
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- start 用于数据量很大时的分页显示,表示分页的数据偏移, 默认为0, 可选参数
- limit 用于数据量很大时的分布显示,设置每页的数据显示数量,默认为30, 可选参数
返回数据:
[
{
"eid": 23812,//试卷id,int类型
"title": "测试试卷", // 试卷标题,string类型
"img": "http://192.168.0.1:5858/xxxxx.jpg",// 试卷封面图片链接,string类型
"url": "http://192.168.0.1:5858/23812", //试卷考试链接,string类型
"createTime": 1539075828,//试卷创建时间的unix时间戳,int类型,单位s(秒)
"available": 1, //试卷是否可用,int类型,1表示可用,0表示不可用
"times": 3918, //试卷的考试次数
"category": "模考" //试卷的分类名称
},
...
]
考生数据管理¶
注:
1.接口地址的host部分请替换成您部署的ip+端口或者域名再使用。
2.code(权限码)在优考试系统的系统设置->开放平台设置处获取。
1、获取考生字段信息¶
获取考生字段信息, 接口如下:
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.getStudentFields&format=raw
code=权限码
- code 每个账户唯一对应的验证码,string类型。
返回数据:
[
{
"sFid":1,// 字段id,int类型
"label": "姓名", //字段标题, string类型
"isLoginField": false, //是否为登录字段,只能存在一个登录字段,不存在或等于false为普通字段,boolean类型
}
]
正常返回的数据如下:
[
{
"sFid": 1,
"sLabel": "姓名"
},
{
"sFid": 2,
"sLabel": "性别"
},
{
"sFid": 4,
"sLabel": "手机"
},
{
"sFid": 5,
"sLabel": "身份证"
},
{
"sFid": 10,
"sLabel": "密码"
},
//以上字段为系统默认字段,实际可能存在更多字段,请以实际获取的对象为准
...
]
字段的添加和修改请到系统的考生管理中处理
2、批量插入考生信息¶
通过该接口,可以添加一个或多个考生。
接口如下所示:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.addStudentsV2&format=raw
参数:
code=权限码
students=[ //考生数组,每个元素对象代表一个考生
{ //代表一个考生信息对象
"gid": 11, //考生所属组的id
"fields": [ //考生信息
{
"sFid": 1, // 考生字段id,int类型,该值可通过"获取考生信息字段"API获取,如"手机"字段id为4, 姓名字段为1
"value":"王二" //考生字段的值,如sFid的值为1,这里则填写姓名
},
...
{
"sFid": 4, // 考生字段id,int类型,该值可通过"获取考生信息字段"API获取,如"手机"字段id为4, 姓名字段为1
"value":"13800000000" //考生字段的值,如sFid的值为4,这里则填写手机号码
}
]
},
...
{ //代表一个考生信息对象
"gid": 11, //考生所属组的id
"fields": [ //考生信息
{
"sFid": 1, // 考生字段id,int类型,该值可通过"获取考生信息字段"API获取,如"手机"字段id为4, 姓名字段为1
"value":"张三" //考生字段的值,如sFid的值为1,这里则填写姓名
},
...
{
"sFid": 4, // 考生字段id,int类型,该值可通过"获取考生信息字段"API获取,如"手机"字段id为4, 姓名字段为1
"value":"13800000001" //考生字段的值,如sFid的值为4,这里则填写手机号码
}
]
}
]
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- students 表示要添加的考生信息, 其中gid表示这个考生要加入到哪个组,如果是多个组,请用逗号分隔的字符串表示。 fields表示考生的信息项。
该接口返回成功添加的考生sid
{
"status": "ok", //成功返回 ok,失败返回 error
"success": [ //成功添加的数据,每个元素都是对象,sid表示考生id, index表示要添加考生的数据索引
{
"sid":123,
"index":1
},
{
"sid":125,
"index":2
}
],
"fail": [3,4,5] //fail表示失败的考生索引
}
3、批量修改考生信息¶
通过该接口,可以修改一个或多个考生的信息 接口如下所示:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.updateStudents&format=raw
参数:
code=权限码
stuInfo=[ //考生数组,每个元素对象代表一个考生
{ //代表一个考生信息对象
"sid": 11, //考生id,id和登录值不能同时为空,必须填写一个
"loginValue":"小明" //考生登录值,id和登录值不能同时为空,必须填写一个
"fields": [ //考生信息
{
"sFid": 1, // 考生字段id,int类型,该值可通过"获取考生信息字段"API获取,如"手机"字段id为4, 姓名字段为1
"value":"王二" //考生字段的值,如sFid的值为1,这里则填写姓名
},
]
},
]
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- stuInfo 表示要更新的考生信息, sid表示考生ID, loginValue表示考生登录值, fields表示考生的字段信息
该接口返回成功修改的考生sid或登录值
{
"status": "ok", //成功返回 ok,失败返回 error
"success": [1,2], //表示成功的考生id或登录值
"fail": [3,4,5] //fail表示失败的考生id或登录值
}
4、批量删除考生信息¶
使用该接口删除一个或多个考生。 接口如下所示:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.delStudents&format=raw
参数:
code=权限码
loginValues=["1000","10001"] //考生登录值列表,字符串数组,id和登录值二选一,优先读取登录值
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- loginValues 表示要删除的考生登录值列表
该接口返回成功删除的考生sid或登录值
{
"status": "ok", //成功返回 ok,失败返回 error
"success": [1,2], //表示成功的考生sid或登录值
"fail": [3,4,5] //fail表示失败的考生的sid或登录值
}
失败则返回:
{
"status": "error", //成功返回 ok,失败返回 error
"error": "无效的sid" //error为失败的错误信息
}
5、移动考生到组¶
使用该接口移动一个或多个考生到一个或多个组。 接口如下所示:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.mvStudents&format=raw
参数:
code=权限码
mvStuInfo={
"gids": [22,33], //如果gids里有多个值,则表示把考生添加到这些组(PS 一个考生允许同时存在多个组)
"loginValues":["小明","小红"] //考生登录字段值,字符串数组
"action": "addto|moveto" //操作, addto表示添加到组,这个时候一个考生可能存在多个组, moveto表示移动到组,这个时候考生只存在一个组。如果action值为moveto,则gids只能为一个,如果有多个gid, 只取第一个
}
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- mvStuInfo 表示要移动的数据信息
该接口返回成功添加的考生loginValue
{
"status": "ok", //成功返回 ok,失败返回 error
"success": [1,2], //表示成功的考生登录字段值
"fail": [3,4,5] //fail表示失败的考生登录字段值
}
失败则返回:
{
"status": "error", //成功返回 ok,失败返回 error
"error": "无效的sid" //error为失败的错误信息
}
6、获取考生信息¶
使用该接口获取一个或多个考生的信息 接口如下所示:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.getStudentsInfo&format=raw
参数:
code=权限码
loginValues=[13212,2382,392]
参数说明:
- code 每个账户唯一对应的验证码,string类型。
- loginValues 表示考生登录字段值列表
一次最多只能查10个考生的信息
该接口成功则返回
{
"status": "ok", //成功返回 ok,失败返回 error
"data": [
{
"loginValue":"王二",//考生登录值,若请求的是loginValues,则返回loginValue
"fields":[
{
"sFid":1,
"label":"姓名",
"value": "王二"
},
{
"sFid":13,
"label":"单位",
"value": "全部门"
}
],
"group": [
"gid": 123, //组的ID
"title": "英文学习小组" //组名称
]
},
{
"loginValue": 3925, //考生的ID
"loginValue":"张三",//考生登录值,若请求的是loginValues,则返回loginValue
"fields":[
{
"sFid":1,
"label":"姓名",
"value": "张三"
},
{
"sFid":13,
"label":"单位",
"value": "全部门"
}
],
"group": [
"gid": 123, //组的ID
"title": "英文学习小组" //组名称
]
}
]
}
失败则返回:
{
"status": "error", //成功返回 ok,失败返回 error
"error": "无效的sid" //error为失败的错误信息
}
如有问题,请随时联系我们客服
同步组织结构¶
注:
1.接口地址的host部分请替换成您部署的ip+端口或者域名再使用。
2.code(权限码)在优考试系统的系统设置->开放平台设置处获取。
同步考生数据可以方便的在系统之间进行考生数据交换,避免手动可能出现的错误;自动同步及时快捷,即可以同步考生信息也可以同步考生的组织结构。
1、新增分组¶
添加考生分组的接口如下:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.newGroup&format=raw
参数:
code=权限码&title=组标题&parentGid=0
- code 每个账户唯一对应的验证码,string类型。
- title 组的标题
- parentGid 父组的ID, 如果为0表示创建的是根分组, 如果大于0,表示创建该组下的一个子组
如果操作成功,则返回
{
"status": "ok", //ok表示成功, error表示错误
"gid": 1931 //gid表示新创建的组的ID
}
如果操作失败,则返回
{
"status": "error",
"error": "标题不能为空" //创建出错时的错误信息
}
2、编辑组名称¶
该接口用于编辑现有组的名称,接口如下:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.renameGroup&format=raw
参数:
code=权限码&title=组标题&gid=0
- code 每个账户唯一对应的验证码,string类型。
- title 组的新标题
- gid 要修改组的ID, 要求大于0
如果操作成功,则返回
{
"status": "ok", //ok表示成功, error表示错误
"gid": 1931, //gid表示组的ID
"oldTitle": "数学1" //表示原组的标题
}
如果操作失败,则返回
{
"status": "error",
"error": "标题不能为空" //创建出错时的错误信息
}
3、删除组¶
该接口用于删除某一个组,接口如下:
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.delGroup&format=raw
参数:
code=权限码&gid=231
- code 每个账户唯一对应的验证码,string类型。
- gid 要被删除的组的ID, 要求大于0
如果操作成功,则返回
{
"status": "ok", //ok表示成功, error表示错误
}
如果操作失败,则返回
{
"status": "error",
"error": "不正确的组ID, 请确认是否有权限修改该组的信息" //创建出错时的错误信息
}
4、移动组¶
移动组用于把一个组移动成另一个组的子组, 接口如下
POST http://192.168.0.1:5858/index.php?option=com_exams&task=api.mvGroup&format=raw
参数:
code=权限码&gid=112&mvToGid=23
- code 每个账户唯一对应的验证码,string类型。
- gid 要被移动的组的ID, 要求大于0
- mvToGid 要移动到的组ID
如果操作成功,则返回
{
"status": "ok", //ok表示成功, error表示错误
}
如果操作失败,则返回
{
"status": "error",
"error": "不正确的组ID, 请确认是否有权限修改该组的信息" //创建出错时的错误信息
}
5、获取组列表¶
返回某一组(或所有组)下所有子组信息, 接口如下
GET http://192.168.0.1:5858/index.php?option=com_exams&task=api.lsGroups&format=raw
参数:
code=权限码&gid=112
- code 每个账户唯一对应的验证码,string类型。
- gid 可选参数, 如果设置了该参数,则列出的是该组下的所有子组的信息。如果gid为0或者没有设置,则表示列出所有根路径下的组数据
如果操作成功,则返回
{
"status": "ok", //ok表示成功, error表示错误,
"data": [
{
"gid": 1312, //组ID
"title": "组标题", //组的标题
},
{
"gid": 1332, //组ID
"title": "组标题", //组的标题
}
...
]
}
如果操作失败,则返回
{
"status": "error",
"error": "不正确的组ID, 请确认是否有权限修改该组的信息" //创建出错时的错误信息
}