跳转至

局域网考试系统接口文档

单点登录

注:
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表示错误
}
表示已经把 gid 移动到 mvToGid 下并成为其的一个子组了

如果操作失败,则返回

{
    "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, 请确认是否有权限修改该组的信息" //创建出错时的错误信息
}