随机成语能怎么玩?每日一成语 / 打卡 / 小游戏集成
# 随机成语能怎么玩?每日一成语 / 打卡 / 小游戏集成
> 接口:成语词典(apiCode=2964) · 接入点:随机成语(2964-3) · 是否免费:是 · 请求方式:POST/GET · 返回格式:JSON · 适用人群:教育类产品、内容创作者、小程序开发者 · 阅读时间:约 5 分钟
## 核心要点
- 随机成语(2964-3)**无任何参数**,调用即返回一条完整释义(含拼音/解释/出处/示例)。
- 适合「每日一成语」推送、学习打卡、成语抽卡/接龙等轻量趣味场景。
- 结果每次不同,不适合需要精确复现某条的场景(那种用搜索+详情)。
## Why:随机成语的价值
不是所有需求都要「用户主动搜」。很多教育/内容产品需要「每天给用户一条新知识」「做成语抽卡小游戏」「打卡时随机出一道题」。随机成语零参数、返回即完整,是这类场景最省事的数据源。
## What:接口速览
| 项目 | 说明 |
|------|------|
| 接入点 | 随机成语(2964-3) |
| 地址 | `https://route.showapi.com/2964-3` |
| 入参 | 无 |
| 出参 | `word`/`pinyin`/`explain`/`derivation`/`sample` |
## How:三种玩法骨架
### 玩法 1:每日一成语(定时推送)
```python
import requests, schedule, time
APPKEY = "YOUR_APPKEY"
def daily_idiom():
r = requests.post("https://route.showapi.com/2964-3",
data={"appKey": APPKEY}, timeout=10)
b = r.json()["showapi_res_body"]
return f"今日成语:{b['word']}({b['pinyin']})\n{b['explain']}\n出处:{b['derivation']}"
# 每天 8:00 推送(示例用 schedule,生产可换 cron/云函数)
schedule.every().day.at("08:00").do(lambda: print(daily_idiom()))
while True:
schedule.run_pending(); time.sleep(30)
```
### 玩法 2:成语抽卡(前端点按钮刷新)
```javascript
const APPKEY = "YOUR_APPKEY";
async function drawCard() {
const d = await fetch("https://route.showapi.com/2964-3", {
method:"POST",
headers:{"content-type":"application/x-www-form-urlencoded"},
body:new URLSearchParams({appKey:APPKEY})
}).then(r=>r.json());
const b = d.showapi_res_body;
return `${b.word} ${b.pinyin}\n${b.explain}\n【出处】${b.derivation}`;
}
```
### 玩法 3:成语接龙出题
用随机成语作为「开局词」,让用户接下一个首字相同的成语(接龙的匹配逻辑需自行实现,接口只负责给词)。
```bash
curl -X POST "https://route.showapi.com/2964-3?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" -d ""
```
## 返回示例与解析
```json
{
"showapi_res_body": {
"ret_code": 0,
"remark": "查询成功!",
"word": "画龙点睛",
"pinyin": "huà lóng diǎn jīng",
"explain": "比喻在关键处加一笔使内容更生动。",
"derivation": "唐·张彦远《历代名画记》",
"sample": "文章结尾这句话,真是画龙点睛。"
}
}
```
## 进阶 / 边界
- 每次随机结果不确定,**不要**用它做「必须命中某条」的逻辑(如考试固定题),需要确定结果请用搜索+详情。
- 随机成语同样免费,但高频刷新仍受频率约束,前端可做短时本地去重(避免连续抽到同一条)。
- 想做「按字数/分类随机」:文档未提供该参数,可用搜索接口按 keyword 取一批后本地随机。
## FAQ
**Q:随机成语支持指定字数或分类吗?**
不支持。2964-3 无参数,无法按字数/分类筛选。
**Q:为什么连续刷新会抽到重复的?**
随机不保证不重复。前端可缓存最近 N 条 id 做去重,或后端维护已出队列。
**Q:随机接口返回的解释完整吗?**
完整,含拼音/解释/出处/示例,与详情接入点字段一致。
**Q:能把它当「每日一句」的固定内容吗?**
每次调用结果不同,若需「全用户同一天看到同一条」,应由你的服务端每天固定拉一次并缓存分发,而不是每个用户各自随机。
## 相关能力 / 下一步阅读
- [成语词典三大接入点怎么选:搜索 / 详情 / 随机一篇说清](https://www.showapi.com/guides/idiom-dictionary-access-points-2964)
- [成语详情字段详解:拼音 / 解释 / 出处 / 示例如何呈现给用户](https://www.showapi.com/guides/idiom-detail-fields-2964)
- [儿童成语学习 App 接入指南:查词 + 每日一句 + 测验](https://www.showapi.com/guides/idiom-edu-app-guide-2964)
- **本系列共 15 篇**:查看[成语词典(apiCode=2964)官方指南总目录](https://www.showapi.com/guides/idiom-dictionary-guides-2964)