学法减分题库 API 接口测评:基于交管 12123 的驾考刷题服务

0 阅读8分钟

学法减分题库 API 接口测评:基于交管 12123 的驾考刷题服务

一、前言

对于驾考科目一、科目四的学员来说,刷题是必经之路。而对于开发者而言,如果要自建一个“学法减分”刷题小程序、App 或网页,最头疼的往往不是界面设计,而是题库数据源——题目内容、答案、选项、题型分类、图片资源…… 这些数据既庞大又需要持续更新。

最近我体验了数鱼 API 市场上的 “学法减分题库” 接口(https://www.shujuyu.cn/api/detail/100 ),该接口基于交管 12123 复习题库,支持搜索、随机出题、答题校验等核心功能,数据更新标注为“实时”。本文将从接口设计、功能覆盖、数据质量、代码集成、优缺点及使用建议等维度进行详细测评。

二、接口基本信息

项目 说明 接口名称 学法减分题库 数据来源 交管 12123 复习题库 所属分类 教育学习 基础地址 http://www.shujuyu.cn/v1/api/xuefa/ 协议 HTTP 数据格式 JSON 版本 v1.0.0 数据更新 实时 日调用量 1345 次 计费方式 按次计费 单价 ¥0.002 / 次(次数包更优惠,低至 ¥0.0016 / 次)

计费方案:

  • 100 次调用包:¥0.002 / 次
  • 500 次调用包:¥0.0019 / 次(省 5%)
  • 1000 次调用包:¥0.0018 / 次(省 10%)
  • 5000 次调用包(推荐):¥0.0017 / 次(省 15%)
  • 10000 次调用包(热门):¥0.0016 / 次(省 20%)

三、认证方式

接口支持三种 API Key 传递方式,生产环境建议优先使用请求头方式,避免密钥出现在访问日志中:

  1. URL 查询参数 :?key=YOUR_API_KEY
  2. Authorization 请求头 :Authorization: Bearer YOUR_API_KEY
  3. X-App-Key 请求头 :X-App-Key: YOUR_API_KEY

四、核心子接口详解

该 API 包含 12 个子接口,覆盖了题库查询、刷题、图片资源、答题校验的完整链路。

1. 健康检查(GET /v1/api/xuefa/ping)

服务存活探测,用于验证接口可用性。

请求示例:

Bash

1

curl "http://www.shujuyu.cn/v1/api/xuefa/ping?key=YOUR_API_KEY"

返回示例:

JSON

1 2 3 4 5 6 7 8 9

{ "msg": "success", "code": 0, "data": { "time": "2026-08-01 12:00:00", "service": "xuefa-api", "version": "1.0" } }

2. 数据统计(GET /v1/api/xuefa/stats)

返回题库总量统计,可用于了解当前题库规模和分布。

返回示例:

JSON

1 2 3 4 5 6 7 8 9 10 11 12 13 14

{ "msg": "success", "code": 0, "data": { "true_false": 2173, "type_count": 3, "with_images": 1255, "single_choice": 1743, "total_records": 4173, "multiple_choice": 257, "fulltext_columns": ["question"], "fulltext_enabled": true } }

从返回数据可见,当前题库共 4173 条记录 ,包含:

  • 单选题:1743 条
  • 判断题:2173 条
  • 多选题:257 条
  • 带图片题目:1255 条
  • 支持全文搜索:是(字段为question )

3. 题型列表(GET /v1/api/xuefa/types)

返回各题型及其数量,适合前端构建题型筛选器。

返回示例:

JSON

1 2 3 4 5 6 7 8 9 10 11 12

{ "msg": "success", "code": 0, "data": { "list": [ { "cnt": 2173, "type": "判断题" }, { "cnt": 1743, "type": "单选题" }, { "cnt": 257, "type": "多选题" } ], "total": 3 } }

4. 可查询字段列表(GET /v1/api/xuefa/fields)

返回题目可查询的字段及其标签,区分了简略字段(brief: true )和详情字段(brief: false )。

返回示例:

JSON

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

{ "msg": "success", "code": 0, "data": { "list": [ { "brief": true, "field": "id", "label": "ID" }, { "brief": true, "field": "type", "label": "题型" }, { "brief": true, "field": "question", "label": "题目内容" }, { "brief": false, "field": "options", "label": "选项" }, { "brief": false, "field": "answer", "label": "答案" }, { "brief": false, "field": "images", "label": "图片URL列表" } ], "total": 6 } }

这意味着:

  • 列表页只需拉取id 、type 、question 等简略字段,减少流量
  • 详情页再按需拉取options 、answer 、images 等完整字段

5. 题目图片(GET /v1/api/xuefa/image)

获取题目关联的图片资源,支持通过文件名f 参数查询特定图片。

6. 精确查询(GET)

根据特定条件精确匹配题目。

7. 全文搜索(GET)

在题目内容中进行全文检索,适合实现“搜题”功能。

8. 分页列表(GET)

分页获取题目列表,适合构建刷题列表或错题本。

9. 题目详情(GET)

获取单道题目的完整信息,包括选项、答案、图片等。

10. 批量查询(POST)

批量获取多道题目,适合一次性加载练习卷。

11. 随机出题(GET)

随机抽取一道题目,适合“每日一题”或随机练习场景。

12. 答题校验(POST)

提交用户答案,返回是否正确及解析,是刷题闭环的核心接口。

五、多语言代码集成示例

官方文档提供了丰富的多语言调用示例,覆盖主流开发语言,集成门槛低。

JavaScript (Fetch)

JavaScript

1 2 3 4 5

const params = {}; const query = new URLSearchParams(params).toString(); const res = await fetch("http://www.shujuyu.cn/v1/api/xuefa/ping?key=YOUR_API_KEY" + query); const data = await res.json(); console.log(data);

Python

Python

1 2 3 4 5 6 7

`import requests

result = requests.get( "www.shujuyu.cn/v1/api/xuef…", params={"key": "YOUR_API_KEY"} ).json() print(result)`

PHP

PHP

1 2 3 4 5 6

<?php $ch = curl_init("http://www.shujuyu.cn/v1/api/xuefa/ping?key=YOUR_API_KEY"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); print_r($result);

Go

Go

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

`package main

import ( "fmt" "io" "net/http" )

func main() { req, err := http.NewRequest("GET", "www.shujuyu.cn/v1/api/xuef…", nil) if err != nil { panic(err) } resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }`

官方还提供了 Java、C# 以及 MCP(Model Context Protocol) 的调用示例。MCP 支持 JSON-RPC 2.0 与 Streamable HTTP,可接入 Cursor、Claude Desktop 等 AI 编程助手,便于在开发过程中通过自然语言调用题库接口。

六、接口返回结构分析

所有接口采用统一的响应格式:

JSON

1 2 3 4 5

{ "code": 0, // 状态码,0 表示成功 "msg": "success", // 返回消息 "data": {} // 业务数据对象 }

这种结构简洁统一,前后端可以统一处理错误码和业务数据,降低集成成本。

七、适用场景推荐

场景 推荐子接口 驾考刷题小程序/App 分页列表、题目详情、答题校验 每日一题 / 随机练习 随机出题 搜题功能 全文搜索、精确查询 错题本 / 练习卷 批量查询、分页列表 题型筛选 题型列表、可查询字段列表 带图题目展示 题目图片、题目详情 接口监控 健康检查、数据统计

八、测评总结

✅ 优点

  1. 数据源权威 :基于交管 12123 复习题库,题目内容与官方贴近,适合驾考学习场景。
  2. 题库规模适中 :4173 条记录,覆盖单选、多选、判断三种题型,其中 1255 道带图片题目,能满足大部分刷题需求。
  3. 字段设计合理 :区分简略字段与详情字段,列表页可只拉取必要数据,节省流量和渲染时间。
  4. 功能链路完整 :从题目查询、分页、搜索,到随机出题、答题校验,形成了完整的刷题闭环。
  5. 支持全文搜索 :fulltext_enabled: true ,可直接实现“搜题”功能,无需自建搜索引擎。
  6. 多语言示例丰富 :cURL、JavaScript、Python、PHP、Java、Go、C# 及 MCP 全覆盖,前后端开发者都能快速上手。
  7. MCP 支持 :可接入 AI 编程工具,提升开发体验。
  8. 计费透明 :按次计费,单价 ¥0.002/次,次数包最高可省 20%,适合个人开发者和团队项目。

⚠️ 不足与注意事项

  1. 仅支持 HTTP :文档中明确标注协议为 HTTP,生产环境建议确认是否支持 HTTPS,若在小程序或 App 中使用,平台可能强制要求 HTTPS。
  2. 部分接口文档未完全展开 :如“精确查询”“全文搜索”“分页列表”“题目详情”“批量查询”“随机出题”“答题校验”等接口的请求参数和返回字段在页面中未详细列出,实际使用时建议通过在线调试功能验证。
  3. 免费额度未明确 :页面未明确展示免费调用额度,新用户建议先购买小额次数包进行测试。
  4. 数据更新频率 :标注为“实时”,但具体更新机制未披露,涉及法规变动的题目建议人工二次核对。

九、使用建议

  1. 生产环境请使用请求头传递 API Key ,避免密钥泄露。
  2. 上线前先调用健康检查接口 确认服务可用性。
  3. 列表页优先使用简略字段 (id 、type 、question ),详情页再按需加载options 、answer 、images ,优化性能。
  4. 带图题目需预先处理图片资源 ,建议通过题目图片接口获取后进行 CDN 缓存,避免每次请求都去远程拉取。
  5. 答题校验结果建议结合本地逻辑二次确认 ,避免因网络延迟导致用户体验问题。
  6. 关注rate_limit 返回的限流信息 (如有),合理控制调用频率,避免触发限制。

十、总结

数鱼的“学法减分题库”API 是一款基于交管 12123 题库、功能完整、集成简便的驾考刷题服务。如果您正在开发驾考学习类小程序、App 或网站,且不希望自行维护庞大的题库数据,这个接口可以显著降低开发成本,快速上线刷题功能。

对于需要搜题、随机出题、答题校验等核心能力的项目,这个 API 值得一试。

接口地址: www.shujuyu.cn/api/detail/…

如需我为您封装该题库的 JavaScript SDK、Python 客户端,或提供配套的刷题页面 Demo,欢迎继续交流。