7.1 概述
码学堂为商户提供8种题型(判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题)的接入服务,商户可以自己的系统中通过接口管理题目。
7.2 新增题目
7.2.1 请求参数说明
序号 | 参数 | 名称 | 是否必须提供 | 是否加入签名 | 描述 |
---|---|---|---|---|---|
01 | merchant_id | 商户号 | 是 | 是 | |
02 | 教师账号 | 是 | 是 | 机构下的教师码学堂账号 | |
03 | timestamp | 时间戳 | 否 | 是 | 建议提供 |
04 | ptype | 题目类型 | 是 | 是 | {1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题,参考 |
05 | kp_ids | 知识点IDs | 是 | 是 | 对应“节”,多个知识点用英文”,”连接 |
06 | difficulty | 题目难度 | 否 | 是 | {1,2,3,4,5} |
07 | score | 题目分数 | 是 | 是 | 保留2位小数 |
08 | tags | 题目标签 | 否 | 是 | |
09 | upload_file_flag | 答题时是否允许上传文件 | 否 | 是 | 主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件 |
10 | upload_image_flag | 答题时是否允许上传图片 | 否 | 是 | 主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片 |
11 | time | 运行时间 | 是 | 是 | 单位s,程序填空、函数、编程题时,必须提供,其他类型不用提供 |
12 | memory | 内存要求 | 是 | 是 | 单位M, 程序填空、函数、编程题时,必须提供,其他类型不用提供 |
13 | language | 编程语言 | 是 | 是 | 程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。关键字参考 |
14 | sign | 签名 | 是 | 否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ |
15 | in | 输入要求说明 | 是 | 否 | 程序填空题、函数题、程序题时,必须提供,其他类型不用提供 |
16 | in_mk | 输入要求说明markdown | 否 | 否 | 程序填空题、函数题、程序题时,可选(推荐上传) |
17 | out | 输出要求说明 | 是 | 否 | 程序填空题、函数题、程序题时,必须提供,其他类型不用提供 |
18 | out_mk | 输出要求说明markdown | 否 | 否 | 程序填空题、函数题、程序题时,可选(推荐上传) |
19 | sample_in_out | 输入输出样例 | 是 | 否 | json数据格式,如[[“样例输入1”,”样例输出"],[“样例输入2”,”样例输出2”]] |
20 | tip | 提示信息 | 否 | 否 | 程序填空题、函数题、程序题时有效 |
21 | tip_mk | 提示信息markdown | 否 | 否 | 程序填空题、函数题、程序题时有效 |
22 | src | 题目来源 | 否 | 否 | 程序填空题、函数题、程序题时有效 |
23 | test_data_in_out | 测试数据集 | 是 | 否 | 程序填空题、函数题、程序题时必须提供,大小不超过1M,如果测试数据集较大时请使用“批量上传测试数据集”接口上传,格式:[[“输入”,”输出”,分数,”说明”],[“输入”,”输出”,分数,”说明”]],如:[[“3 4”,”7”,10.0,”data1”],[“10 20”,”30”,10.0,”data2”]] |
24 | desc | 题面描述 | 是 | 否 | 可以为html格式 |
25 | markdown | 题面描述markdown | 否 | 否 | 题面描述markdown格式,建议提供 |
26 | source | 题目资源/选项 | 是 | 否 | 当题目类型为判断、单选、多选、程序填空、函数题时必须传入(参考),当为主观题时(评分标准及答案)可选,其他类型时无效 |
27 | source_mk | 评分标准与答案的markdown | 否 | 否 | 主观题目时,评分标准与答案的markdown |
28 | score_json | 分数分布/得分点 | 是 | 否 | 主观题目时必须上传,其他题型不用上传 |
7.2.2 请求地址及方式
请求地址:https://mp.api.maxuetang.cn/problem-insert
请求方式:POST
7.2.3 返回JSON示例与参数说明
{
"success": true,
"msg": "保存成功",
"data": {
"pid": "9220", //题目编号
"ptype": "7", //题目类型
"source": "{\"0\":1,\"1\":0}", //题目资源/选项
"uid": "54****************7", //教师ID
"score": "2", //分数
"email": "xxxx@qq.com"
}
}
7.2.4 增加题目接入示例
//hutool-all-4.6.7.jar
//新增一个题目
public static void addProblem() {
String url = "https://mp.api.maxuetang.cn/problem-insert";
Map params = new TreeMap();
params.put("merchant_id", "商户ID");
params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号
params.put("timestamp", System.currentTimeMillis());
params.put("ptype", 7);//题目类型,必须
params.put("kp_ids", "2502,2503");//知识点ID,对应“节”,多个知识点用英文","分割,必须
params.put("difficulty", 1);//题目难度,{1,2,3,4,5},可选
params.put("score", 2.0);//题目分数,必须
params.put("tags", "C语言,Java");//标签,可选
params.put("upload_file_flag", 1);//主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件,可选
params.put("upload_image_flag", 1);//主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片,可选
params.put("time", 1);//时间要求,单位s,程序填空、函数、编程题时,必须
params.put("memory", 32);//内存要求,单位M, 程序填空、函数、编程题时,必须
params.put("sign", SignHelper.sign(params, "商户密钥"));//签名
//以下内容不参与签名
params.put("in", "输入要求说明html");//输入要求说明,程序填空题、函数题、程序题时,必须
params.put("in_mk", "输入要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传)
params.put("out", "输出要求说明");//输出要求说明,程序填空题、函数题、程序题时,必须
params.put("out_mk", "输出要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传)
params.put("sample_in_out", "[[\"样例输入1\",\"样例输出1\"],[\"样例输入2\",\"样例输出2\"]]");//附加的多个程序样例输入与输出,程序填空题、函数题、程序题时,可选
params.put("tip", "提示html");//提示,程序填空题、函数题、程序题时,可选
params.put("tip_mk", "提示markdown");//提示markdown,程序填空题、函数题、程序题时,可选
params.put("src", "题目来源");//题目来源,程序填空题、函数题、程序题时,可选
params.put("test_data_in_out", "[[\"3 4\",\"7\",10.0,\"data1\"],[\"10 20\",\"30\",10.0,\"data2\"]]");//测试输入输出,程序填空题、函数题、程序题时,必须
params.put("desc", "这里是题面描述html-1");//题面描述,可以为html格式,必须
params.put("markdown", "这里是题面描述markdown");//题面描述,markdown格式,可选,不传入时,不能在码学堂中修改题目
params.put("source", "{\"0\":1,\"1\":0}");//题目资源/选项,当题目类型为判断、单选、多选、程序填空、函数题时必须传入,当为主观题时(评分标准及答案)可选,其他类型时无效
params.put("source_mk", "$x_y$");//主观题目时,评分标准与答案的markdown,可选
params.put("score_json", "{\"0\":\"10\",\"1\":\"10\"}");//主观题目时必须上传
String result = HttpUtil.post(url, params);
System.out.println("执行结果:"+result);
}
7.3 修改题目
7.3.1 请求参数说明
序号 | 参数 | 名称 | 是否必须提供 | 是否加入签名 | 描述 |
---|---|---|---|---|---|
01 | merchant_id | 商户号 | 是 | 是 | |
02 | 教师账号 | 是 | 是 | 机构下的教师码学堂账号 | |
03 | timestamp | 时间戳 | 否 | 是 | 建议提供 |
04 | ptype | 题目类型 | 是 | 是 | {1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题 |
05 | pid | 题目ID | 是 | 是 | 码学堂题目编号 |
06 | kp_ids | 知识点IDs | 是 | 是 | 对应“节”,多个知识点用英文”,”连接 |
07 | difficulty | 题目难度 | 否 | 是 | {1,2,3,4,5} |
08 | score | 题目分数 | 否 | 是 | 保留2位小数 |
09 | tags | 题目标签 | 否 | 是 | |
10 | upload_file_flag | 答题时是否允许上传文件 | 否 | 是 | 主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件 |
11 | upload_image_flag | 答题时是否允许上传图片 | 否 | 是 | 主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片 |
12 | time | 运行时间 | 否 | 是 | 单位s,程序填空、函数、编程题时,必须提供,其他类型不用提供 |
13 | memory | 内存要求 | 否 | 是 | 位M, 程序填空、函数、编程题时,必须提供,其他类型不用提供 |
14 | language | 编程语言 | 是 | 是 | 程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。关键字参考 |
15 | sign | 签名 | 是 | 否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ |
16 | in | 输入要求说明 | 否 | 否 | 程序填空题、函数题、程序题时,必须提供,其他类型不用提供 |
17 | in_mk | 输入要求说明markdown | 否 | 否 | 程序填空题、函数题、程序题时,可选(推荐上传) |
18 | out | 输出要求说明 | 否 | 否 | 程序填空题、函数题、程序题时,必须提供,其他类型不用提供 |
19 | out_mk | 输出要求说明markdown | 否 | 否 | 程序填空题、函数题、程序题时,可选(推荐上传) |
20 | sample_in_out | 输入输出样例 | 否 | 否 | json数据格式,如[[“样例输入1”,”样例输出"],[“样例输入2”,”样例输出2”]] |
21 | tip | 提示信息 | 否 | 否 | 程序填空题、函数题、程序题时有效 |
22 | tip_mk | 提示信息markdown | 否 | 否 | 程序填空题、函数题、程序题时有效 |
23 | src | 题目来源 | 否 | 否 | 程序填空题、函数题、程序题时有效 |
24 | desc | 题面描述 | 否 | 否 | 可以为html格式 |
25 | markdown | 题面描述markdown | 否 | 否 | 题面描述markdown格式,建议提供 |
26 | source | 题目资源/选项 | 否 | 否 | 当题目类型为判断、单选、多选、程序填空、函数题时必须传入,当为主观题时(评分标准及答案)可选(参考),其他类型时无效 |
27 | source_mk | 评分标准与答案的markdown | 否 | 否 | 主观题目时,评分标准与答案的markdown |
28 | score_json | 分数分布/得分点 | 否 | 否 | 主观题目时必须上传,其他题型不用上传 |
7.3.2 请求地址及方式
请求地址:https://mp.api.maxuetang.cn/problem-update
请求方式:POST
7.3.3 返回JSON示例与参数说明
{
"success": true,
"msg": "保存成功",
"data": {
"pid": "9220", //题目编号
"ptype": "7", //题目类型
"source": "{\"0\":1,\"1\":0}", //题目资源/选项
"uid": "54****************7", //教师ID
"score": "2", //分数
"email": "xxxx@qq.com"
}
}
7.3.4 增加题目接入示例
//hutool-all-4.6.7.jar
public static void updateProblem() {
String url = "https://mp.api.maxuetang.cn/problem-update";
Map params = new TreeMap();
params.put("merchant_id", "商户ID");
params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号
params.put("timestamp", System.currentTimeMillis());
params.put("ptype", 7);//题目类型,必须
params.put("pid", 9219);//题目ID,必须
params.put("kp_ids", "2502,2503");//知识点ID,对应“节”,多个知识点用英文","分割,可选
params.put("difficulty", 1);//题目难度,{1,2,3,4,5},可选
params.put("score", 2.0);//题目分数,可选
params.put("tags", "C语言,Java");//标签,可选
params.put("time", 1);//时间要求,单位s,程序填空、函数、编程题时,可选
params.put("memory", 32);//内存要求,单位M, 程序填空、函数、编程题时,可选
params.put("sign", SignHelper.sign(params, "商户密钥"));//签名
//以下内容不参与签名
params.put("in", "输入要求说明html");//输入要求说明,程序填空题、函数题、程序题时,可选
params.put("in_mk", "输入要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传)
params.put("out", "输出要求说明");//输出要求说明,程序填空题、函数题、程序题时,可选
params.put("out_mk", "输出要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传)
params.put("sample_in_out", "[[\"样例输入21\",\"样例输出21\"],[\"样例输入23\",\"样例输出23\"]]");//附加的多个程序样例输入与输出,程序填空题、函数题、程序题时,可选
params.put("tip", "提示html");//提示,程序填空题、函数题、程序题时,可选
params.put("tip_mk", "提示markdown");//提示markdown,程序填空题、函数题、程序题时,可选
params.put("src", "题目来源");//题目来源,程序填空题、函数题、程序题时,可选
params.put("desc", "这里是修改后的题面描述html");//题面描述,可以为html格式,必须
params.put("markdown", "这里是修改后的题面描述markdown");//题面描述,markdown格式,可选,不传入时,不能在码学堂中修改题目
params.put("source", "{\"0\":0,\"1\":1}");//题目资源/选项,当题目类型为判断、单选、多选、程序填空、函数题时传入,其他类型时无效
params.put("score_json", "{\"0\":\"10\",\"1\":\"10\"}");//主观题目时上传
String result = HttpUtil.post(url, params);
System.out.println("执行结果:"+result);
}
7.4 删除题目
7.4.1 请求参数说明
序号 | 参数 | 名称 | 是否必须提供 | 是否加入签名 | 描述 |
---|---|---|---|---|---|
01 | merchant_id | 商户号 | 是 | 是 | |
02 | 教师账号 | 是 | 是 | 机构下的教师码学堂账号 | |
03 | timestamp | 时间戳 | 否 | 是 | 建议提供 |
04 | ptype | 题目类型 | 是 | 是 | {1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题 |
05 | pid | 题目ID | 是 | 是 | 码学堂题目编号 |
06 | sign | 签名 | 是 | 否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ |
7.4.2 请求地址及方式
请求地址:https://mp.api.maxuetang.cn/problem-delete
请求方式:POST
7.4.3 返回JSON示例与参数说明
{
"success": true,
"msg": "保存成功"
}
7.4.4 增加题目接入示例
//hutool-all-4.6.7.jar
//删除题目
public static void deleteProblem() {
String url = "https://mp.api.maxuetang.cn/problem-delete";
Map params = new TreeMap();
params.put("merchant_id", "商户ID");
params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号
params.put("timestamp", System.currentTimeMillis());
params.put("ptype", 7);//题目类型,必须
params.put("pid", 9219);//题目ID,必须
params.put("sign", SignHelper.sign(params, "商户密钥"));//签名
String result = HttpUtil.post(url, params);
System.out.println("执行结果:"+result);
}