字典查询:语文学习 App 如何集成?从查字到生词本的全链路设计
# 字典查询:语文学习 App 如何集成?从查字到生词本的全链路设计
> 元信息:接口 **字典查询**(apiCode 1524)· 免费服务 · POST/GET · JSON · 适用:教育产品 PM、全栈工程师、语文类 App 开发者 · 阅读时间约 8 分钟
## 核心要点
- 以「学生查字 → 存入生词本 → 复习」为主线,串联 1524-5 详情、1524-6 成语、1524-3/4 检索。
- 字典类数据变化极低,适合本地缓存降低免费档位调用量。
- 全链路含:检索入口、详情展示、生词存储、复习提醒四个环节。
## Why:语文学习场景为什么适合接字典查询
学生遇到不认识的字/词,希望「一扫/一输就出释义、顺手收藏、日后复习」。字典查询 6 个接入点恰好覆盖「拼音检索、部首检索、单字详情、词语解释」,无需自建词库就能做出完整的识字与积累功能。
## What:前置条件与接口速览
| 环节 | 用到的接入点 | 必填参数 |
|------|------|------|
| 拼音检索 | 1524-3 | `pinyin` |
| 部首检索 | 1524-4 | `bushou` |
| 单字详情 | 1524-5 | `hanzi` |
| 词语/成语解释 | 1524-6 | `ciyu` |
接口详情页:[https://www.showapi.com/apiGateway/view/1524](https://www.showapi.com/apiGateway/view/1524)
## How:全链路实现
### 步骤 1:检索入口(拼音/部首任选)
```python
import requests
APP_KEY = "YOUR_APPKEY"
BASE = "https://route.showapi.com"
def query(path: str, **params):
r = requests.post(f"{BASE}/{path}", params={"appKey": APP_KEY},
data=params,
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=10)
rb = r.json().get("showapi_res_body", {})
if rb.get("ret_code") != "0":
raise RuntimeError(rb.get("remark"))
return rb
# 学生输入拼音「a」→ 候选字列表
candidates = query("1524-3", pinyin="a").get("datas", [])
```
### 步骤 2:点击候选字 → 拿详情(1524-5)
```python
detail = query("1524-5", hanzi="你")
def to_text(v):
if isinstance(v, list): return "\n".join(map(str, v))
return str(v) if v is not None else ""
print(detail["hanzi"], detail["pinyin"], detail["bushou"], detail["bihua"], detail["wubi"])
print("组词:", detail.get("words"))
print("释义:", to_text(detail.get("basic_explain")))
```
### 步骤 3:存入生词本(本地库)
```python
import sqlite3
db = sqlite3.connect("vocab.db")
db.execute("""CREATE TABLE IF NOT EXISTS vocab(
hanzi TEXT PRIMARY KEY, pinyin TEXT, bushou TEXT, bihua TEXT, wubi TEXT,
words TEXT, explain TEXT, added_at TEXT)""")
db.execute("INSERT OR REPLACE INTO vocab VALUES (?,?,?,?,?,?,?,datetime('now'))",
(detail["hanzi"], detail["pinyin"], detail["bushou"], detail["bihua"],
detail.get("wubi"), detail.get("words"), to_text(detail.get("basic_explain"))))
db.commit()
```
### 步骤 4:复习提醒(定时拉取生词本)
```python
rows = db.execute("SELECT hanzi, pinyin FROM vocab ORDER BY added_at DESC LIMIT 10").fetchall()
for hanzi, pinyin in rows:
print("复习:", hanzi, pinyin)
```
### 前端时序(概览)
```
学生输入拼音/部首 → 1524-3/1524-4 返回候选 → 点击汉字
→ 1524-5 返回详情 → 展示 + 「加入生词本」→ 本地库存储
→ 复习模块从本地库抽取 → 展示拼音/部首帮助记忆
```
## 返回示例与字段解析
详情接口返回见[字典查询:汉字详细信息(1524-5)接入](https://www.showapi.com/guides/dict-char-detail-1524);词语解释见[字典查询:词语或成语一键解释(1524-6)](https://www.showapi.com/guides/dict-idiom-explain-1524)。
## 进阶 / 边界
- **缓存优先**:常用字(如「的」「一」)详情命中本地缓存即可,不必每次调接口,节省免费档位。
- **生词本放本地**:生词本是用户私有数据,存本地或自有数据库,不要依赖接口存储。
- **多音字**:1524-5 只返单一拼音,生词本可按需记录用户遇到的具体读音。
- **批量导入教材生字**:可预先批量调 1524-5 建本地字库(注意档位限额,错峰调用)。
## FAQ
**Q1:学生输入拼音还是部首,怎么决定用哪个接入点?**
两个都提供:知道读音用 1524-3,知道字形用 1524-4;列表点击后再用 1524-5 取详情。
**Q2:生词本数据要调接口存吗?**
不用。生词本是你的业务数据,存本地或自有数据库;接口只负责「查」,不负责「存」。
**Q3:免费档位够一个班级用吗?**
取决于调用频次。建议详情类数据本地缓存,仅首次查询走接口,可显著降低调用量。
**Q4:能做成语接龙或造句吗?**
接口提供成语解释(1524-6),但接龙/造句属业务逻辑,需你自己在应用层实现。
## 相关能力 / 下一步阅读
- [字典查询:汉字详细信息(1524-5)接入](https://www.showapi.com/guides/dict-char-detail-1524)
- [字典查询:词语或成语一键解释(1524-6)接入与 allusion_explain 空值处理](https://www.showapi.com/guides/dict-idiom-explain-1524)
- [字典查询:通过 MCP 在 AI 客户端直接查字典](https://www.showapi.com/guides/dict-mcp-1524)
- **本系列共 12 篇**:查看[字典查询指南总目录](https://www.showapi.com/guides/dict-guides-1524)