hatsumi.fun · 接口控制台
接口服务运行中 api.hatsumi.fun/v1
◆ 个人自建 · 学习测试接口服务

学生学习测试自用网站接口

这是我为个人学习测试场景搭的一套接口服务:按科目与知识点抽题、在线作答、自动判分,并把错题沉淀成可回顾的记录。 它服务于 hatsumi.fun 上的练习流程,题库、判分规则与访问凭据都由我本人维护。

6对外接口数量
9已整理题库科目
1200+题库题目总量
60/min单凭据调用上限
01

能力概览

整套接口围绕「练习—作答—判分—回顾」四步循环设计,调用方是我自己的练习页面与命令行脚本, 因此结构上尽量保持扁平:一次请求完成一件事,返回体里直接带上判分结果与解析。

📚

题库抽取

按科目、章节、难度与题型筛选题目,支持固定题量与随机顺序,同一次测试内不重复出题。

⏱️

限时测试

创建测试会话时带上时长参数,服务端记录开始与截止时间,超时后按已提交的作答结算。

✅

自动判分

客观题即时判分,主观题按关键词命中评分;每次作答都返回得分与题目解析文本。

🔁

错题回顾

测试结束后生成成绩单,把错误题目与正确答案整理成一份可复盘的清单。

适用场景

专项刷题前的知识点摸底、单元复习后的自测、考前限时模拟,以及为自己的错题本补充题目来源。 这些都是个人学习流程里的固定环节,接口负责把其中重复的动作自动化。

02

接入准备

  1. 取得访问凭据 凭据用于识别调用方身份,每个凭据可单独设置题量上限与有效期。
  2. 确认基础地址与协议 接口基址为 https://api.hatsumi.fun/v1,全部走 HTTPS,仅接受 JSON 请求体。
  3. 放置请求头 请求头携带 Authorization: Bearer $HATSUMI_TOKEN,并声明 Content-Type: application/json。
  4. 本地验证连通性 先调用健康检查接口确认服务可达,再进入业务接口的联调。
提示:凭据只在本机环境变量中保存,不要写进前端脚本或提交到代码仓库;一旦泄漏可即时作废并重新生成。
03

请求调用

下面给出一段创建测试会话的调用写法,以及等价的脚本版本,按手头工具挑一种即可。

POST/v1/sessions
# 创建一次练习会话:从指定题库抽取 10 题
curl -X POST https://api.hatsumi.fun/v1/sessions \
  -H "Authorization: Bearer $HATSUMI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"bank_id":"math-g7-algebra","count":10,"mode":"practice"}'

等价的脚本版本,可直接放进练习页面的加载逻辑里:

JSfetch
const token = process.env.HATSUMI_TOKEN;

const res = await fetch("https://api.hatsumi.fun/v1/sessions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + token,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ bank_id: "math-g7-algebra", count: 10, mode: "practice" })
});

if (!res.ok) {
  throw new Error("请求失败:HTTP " + res.status);
}

const { session_id, questions } = await res.json();
console.log(session_id, questions.length);

返回体结构统一为 code / message / data 三段:

JSON200 OK
{
  "code": 0,
  "message": "ok",
  "data": {
    "session_id": "s_2026_0418_7f3c9a",
    "bank_id": "math-g7-algebra",
    "count": 10,
    "expires_at": "2026-04-18T21:30:00+08:00"
  }
}
04

接口清单

全部路径均以基址 https://api.hatsumi.fun/v1 开头,限频按单个凭据计算。

方法路径用途主要参数限频
GET /health 服务健康检查 — 不限
GET /banks 获取题库列表与科目分类 subject, grade 30/min
GET /banks/{bank_id}/questions 按条件抽取题目 chapter, level, count 60/min
POST /sessions 创建一次测试会话 bank_id, count, mode 20/min
POST /sessions/{id}/answers 提交作答并即时判分 question_id, answer 60/min
GET /sessions/{id}/report 获取成绩单与错题清单 session_id 30/min

题库标识约定

题库标识采用「科目-年级-章节」的写法,例如 math-g7-algebra 表示七年级代数, physics-g8-optics 表示八年级光学。做题时先查题库列表,再拿标识去抽题,避免写死。

05

返回约定

业务错误一律通过 code 字段表达,HTTP 状态码只反映传输与鉴权层面。

HTTPcode含义处理方式
2000请求成功读取 data 字段
4001001参数缺失或格式不符检查请求体字段类型
4011002凭据缺失或已失效核对 Authorization 请求头
4041004题库或会话不存在重新拉取题库列表确认标识
4291006调用频率超出上限退避 3 秒后重试一次
5002001服务端内部异常稍后重试,持续失败则记录时间点

判分结果字段

提交作答后返回的 data 中包含 correct、score、 answer_key 与 explain 四个字段, 分别表示是否答对、本次得分、标准答案与解析。主观题按关键词命中比例给分,命中情况会一并写入 explain。

稳定性说明:接口服务与题库数据每天凌晨做一次快照备份;如遇成绩单读取异常,可等备份回滚完成后重新拉取。
06

关于与联系

黄
黄龙翔 站点主办人 · 接口维护与题库整理

这个站点由我一人搭建和维护,从题目的录入、判分规则的调整到接口的日常运维都是自己动手。 搭建它的初衷很简单:把复习过程中反复出现的抽题、对答案、整理错题这些动作交给接口,腾出时间专注在知识本身。

接口维护 题库整理 判分规则 学习记录
主办人
黄龙翔
站点域名
hatsumi.fun
电子邮箱
admin@hatsumi.fun
联系电话
0898-6672 3158
通信地址
海南省海口市龙华区滨海大道 79 号中环国际广场 A 座 12 层 1207 室
值守时间
工作日 09:00 – 18:00

接口相关问题、题库纠错或使用建议,欢迎通过邮箱联系我;涉及账号与凭据的事项请直接说明域名 hatsumi.fun 与调用时间,便于我定位日志。