码学堂商户接入指南
1. 概述与接入流程
2. 题目加载接口指南
3. 提交判题接口指南
4. 测评结果查询接口指南
5. 知识点加载接口指南
6. 知识点管理接口指南
7. 题目管理接口指南
选项格式说明
编程语言对应说明
8. 编程题、函数题、程序填空题批量上传测试数据集
9. 商户授权说明
-
+
home page
7. 题目管理接口指南
# 7.1 概述 码学堂为商户提供8种题型(判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题)的接入服务,商户可以自己的系统中通过接口管理题目。 # 7.2 新增题目 ## 7.2.1 请求参数说明 | 序号 | 参数 | 名称 | 是否必须提供|是否加入签名 |描述 | | :----: | :----: | :----: | :----: |:---- |:---- | | 01 | merchant_id | 商户号 | 是 | 是 | | | 02 | email | 教师账号|是|是|机构下的教师码学堂账号 | | 03|timestamp|时间戳 | 否 | 是|建议提供| |04|ptype|题目类型|是|是|{1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题,[参考](http://help.maxuetang.cn/project-14/doc-59/#h1-1.5u9898u76EEu7C7Bu578B "参考")| |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|编程语言|是|是|程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。[关键字参考](http://help.maxuetang.cn/project-14/doc-77/ "关键字参考")| | 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|题目资源/选项|是|否|当题目类型为判断、单选、多选、程序填空、函数题时必须传入([参考](http://help.maxuetang.cn/project-14/doc-76/ "参考")),当为主观题时(评分标准及答案)可选,其他类型时无效| |27|source_mk|评分标准与答案的markdown|否|否|主观题目时,评分标准与答案的markdown| |28|score_json|分数分布/得分点|是|否|主观题目时必须上传,其他题型不用上传| ## 7.2.2 请求地址及方式 请求地址:`https://mp.api.maxuetang.cn/problem-insert` 请求方式:`POST` ## 7.2.3 返回JSON示例与参数说明 ```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 增加题目接入示例 ```java //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 | email | 教师账号|是|是|机构下的教师码学堂账号 | | 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|编程语言|是|是|程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。[关键字参考](http://help.maxuetang.cn/project-14/doc-77/ "关键字参考")| | 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|题目资源/选项|否|否|当题目类型为判断、单选、多选、程序填空、函数题时必须传入,当为主观题时(评分标准及答案)可选([参考](http://help.maxuetang.cn/project-14/doc-76/ "参考")),其他类型时无效| |27|source_mk|评分标准与答案的markdown|否|否|主观题目时,评分标准与答案的markdown| |28|score_json|分数分布/得分点|否|否|主观题目时必须上传,其他题型不用上传| ## 7.3.2 请求地址及方式 请求地址:`https://mp.api.maxuetang.cn/problem-update` 请求方式:`POST` ## 7.3.3 返回JSON示例与参数说明 ```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 增加题目接入示例 ```java //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 | email | 教师账号|是|是|机构下的教师码学堂账号 | | 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示例与参数说明 ```json { "success": true, "msg": "保存成功" } ``` ## 7.4.4 增加题目接入示例 ```java //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); } ```
码学堂管理员
June 6, 2023, 12:33 p.m.
Share documents
Collection documents
Last
Next
Scan wechat
Copy link
Scan your mobile phone to share
Copy link
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
share
link
type
password
Update password