学习通题库API接口对接教程 - 超星学习通答案查询API文档
学习通题库API为开发者提供稳定的超星学习通答案查询能力,可用于题库搜索、网课答案查询、学习工具集成等场景。接口采用标准JSON格式,支持JavaScript、Python、PHP、Java等语言调用。
一、接口地址
| 项目 | 说明 |
|---|---|
| 请求地址 | POST https://so.ucuc.net/prod-api/system/questionBank/search |
| Content-Type | application/json |
| 编码 | UTF-8 |
二、请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| question | String | 是 | 完整题目内容 |
| apiKey | String | 是 | 用户专属API Key |
| type | String | 否 | 题型:单选题、多选题、判断题、填空题、简答题 |
| options | String | 否 | 选项JSON数组字符串 |
推荐:单选题、多选题建议传入
type 和 options,能显著提高学习通题库搜索准确率。三、请求示例
最简JSON请求
{
"question": "下列关于细胞的说法,正确的是?",
"apiKey": "your_api_key"
}
完整JSON请求
{
"question": "下列关于细胞的说法,正确的是?",
"apiKey": "your_api_key",
"type": "单选题",
"options": "[\"A.细胞是生命活动的基本单位\",\"B.所有细胞都有细胞壁\"]"
}
四、响应格式
{
"code": 200,
"msg": "查询成功",
"data": {
"title": "下列关于细胞的说法,正确的是?",
"answer": "A",
"type": "单选题",
"source": "remote",
"remainingCount": 99
}
}
五、JavaScript / Axios 调用示例
import axios from 'axios'
async function searchQuestion(apiKey, question, type = null, options = null) {
const response = await axios.post(
'https://so.ucuc.net/prod-api/system/questionBank/search',
{
question: question.trim(),
apiKey,
type,
options: options ? JSON.stringify(options) : null
},
{ headers: { 'Content-Type': 'application/json' } }
)
return response.data
}
六、Python requests 调用示例
import requests
import json
def search_question(api_key, question, q_type=None, options=None):
payload = {
"question": question.strip(),
"apiKey": api_key,
"type": q_type,
"options": json.dumps(options, ensure_ascii=False) if options else None
}
resp = requests.post(
"https://so.ucuc.net/prod-api/system/questionBank/search",
json=payload,
timeout=15
)
return resp.json()
七、cURL 调试示例
curl -X POST "https://so.ucuc.net/prod-api/system/questionBank/search" ^
-H "Content-Type: application/json" ^
-d "{\"question\":\"下列关于细胞的说法,正确的是?\",\"apiKey\":\"your_api_key\",\"type\":\"单选题\"}"
八、对接注意事项
- 请求超时建议设置为15秒以上。
- API Key属于敏感信息,请不要暴露在公开前端代码中。
- 重复查询相同题目命中缓存时不扣次数。
- 化学式中的加号如 Ca2+、Na+ 系统会自动兼容处理。
- 批量查询建议控制并发,避免触发限流。