儿童成语学习 App 接入指南:查词 + 每日一句 + 测验
# 儿童成语学习 App 接入指南:查词 + 每日一句 + 测验
> 接口:成语词典(apiCode=2964) · 接入点:搜索(2964-1)/详情(2964-2)/随机(2964-3) · 是否免费:是 · 请求方式:POST/GET · 返回格式:JSON · 适用人群:教育类产品经理、少儿应用开发者 · 阅读时间:约 7 分钟
## 核心要点
- 面向 6-9 岁学习场景,组合三个接入点:搜索查词、随机做「每日一句」、详情字段生成测验。
- 用 `pinyin`+`explain`+`sample` 做儿童友好卡片;用随机成语出选择题测验。
- 全部免费,无需维护成语库,适合快速做出 MVP。
## Why:为什么儿童成语 App 适合用它
做少儿成语产品,难点在「内容从哪来、准不准、好不好呈现」。成语词典免费、返回结构化(拼音/解释/出处/示例),正好覆盖查词、每日一句、测验三大刚需,且数据来自官方、比模型现编更可靠。本文给一套可落地的功能组合。
## What:功能 ↔ 接入点映射
| 功能 | 接入点 | 用法 |
|------|--------|------|
| 查词(输入联想) | 2964-1 搜索 | keyword 部分匹配出候选 |
| 看释义卡片 | 2964-2 详情 | 用 id 取 pinyin/explain/derivation/sample |
| 每日一句 | 2964-3 随机 | 每天固定拉一条缓存分发 |
| 测验出题 | 2964-3 随机 / 2964-1 | 取若干成语生成选择题 |
## How:核心代码
### 每日一句(服务端每天拉一次,缓存分发)
```python
import requests, redis
APPKEY = "YOUR_APPKEY"; rds = redis.Redis()
def daily_idiom():
key = "idiom:daily:" + __import__("datetime").date.today().isoformat()
hit = rds.get(key)
if hit: return hit
b = requests.post("https://route.showapi.com/2964-3",
data={"appKey": APPKEY}, timeout=10).json()["showapi_res_body"]
val = f"{b['word']}({b['pinyin']})\n{b['explain']}\n例句:{b['sample']}"
rds.setex(key, 86400, val)
return val
```
### 测验:随机取 4 条生成选择题
```python
def quiz_choices(n=4):
words = []
for _ in range(n):
b = requests.post("https://route.showapi.com/2964-3",
data={"appKey": APPKEY}, timeout=10).json()["showapi_res_body"]
words.append(b)
# 以第一个为题干,其余三个的 explain 作干扰项
q, opts = words[0], [w["explain"] for w in words]
return {"word": q["word"], "pinyin": q["pinyin"], "answer": q["explain"], "options": opts}
```
### 儿童友好卡片呈现
```
┌─────────────────────┐
│ 守株待兔 │
│ shǒu zhū dài tù 🔊 │
│ 比喻死守经验… │
│ 【出处】《韩非子》 │
│ 例句:凡事须主动… │
└─────────────────────┘
```
> 字段缺失(如 sample 为空)时,对应区块不展示,避免空白占位。
## 进阶 / 边界
- **读音朗读**:用 `pinyin` 或 `word` 接浏览器 TTS(`lang="zh-CN"`),帮助识字。
- **难度控制**:接口不支持按字数/学段筛选,可在你侧维护「适龄成语白名单」,只在白名单内用随机/搜索结果。
- **缓存**:每日一句/详情均建议缓存([缓存策略](https://www.showapi.com/guides/idiom-pagination-cache-2964)),降调用、提响应。
## FAQ
**Q:能不能只给小学生常用成语?**
接口无学段筛选;建议自建适龄白名单,只用白名单内的词做随机/测验。
**Q:每日一句怎样保证所有用户同一天看到同一条?**
由服务端每天固定拉一次并缓存分发,不要每用户各自随机。
**Q:释义太难懂,儿童看不懂怎么办?**
可在 explain 基础上由你的产品加「大白话」注释层,接口负责给权威底稿。
**Q:需要自己存成语库吗?**
不需要,三个接入点已覆盖查词/释义/随机,直接调用即可。
## 相关能力 / 下一步阅读
- [随机成语能怎么玩?每日一成语 / 打卡 / 小游戏集成](https://www.showapi.com/guides/idiom-random-usage-2964)
- [成语详情字段详解:拼音 / 解释 / 出处 / 示例如何呈现给用户](https://www.showapi.com/guides/idiom-detail-fields-2964)
- [免费接口下如何设计分页缓存,减少重复调用?](https://www.showapi.com/guides/idiom-pagination-cache-2964)
- **本系列共 15 篇**:查看[成语词典(apiCode=2964)官方指南总目录](https://www.showapi.com/guides/idiom-dictionary-guides-2964)