技术博客
成语词典:5 分钟接入,从注册到第一条搜索结果

成语词典:5 分钟接入,从注册到第一条搜索结果

作者: 万维易源
2026-09-03
成语词典快速接入Python示例免费接口
# 成语词典:5 分钟接入,从注册到第一条搜索结果 > 接口:成语词典(apiCode=2964) · 接入点:搜索成语(2964-1) · 是否免费:是 · 请求方式:POST/GET · 返回格式:JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟 ## 核心要点 - 成语词典是**免费**接口,控制台拿到 AppKey 即可调用,无需购买资源包。 - 搜索成语(2964-1)只需一个必填参数 `keyword`,返回分页的成语名列表。 - 注意:搜索只返回成语名与 `id`,**完整释义在「成语详情」接入点**——本篇先跑通搜索。 ## Why:这跟我有什么关系 如果你在做教育类小程序、语文学习工具、内容创作插件,或者只是想在自家产品里加一个「查成语」的能力,成语词典能让你不维护成语库、不写爬虫,几分钟就拿到结构化数据。免费 + 标准 JSON 返回,接入成本极低。 ## What:前置条件与接口速览 | 项目 | 说明 | |------|------| | 接口/接入点 | 成语词典 → 搜索成语(2964-1) | | 请求地址 | `https://route.showapi.com/2964-1` | | 请求方式 | POST 或 GET | | 鉴权 | query 参数 `appKey`(来自控制台) | | 计费 | 免费服务 | | 必填参数 | `keyword`(String,搜索关键字) | | 选填参数 | `page`(String,查询页码,默认 1) | | 返回格式 | JSON,业务数据在 `showapi_res_body` | 前置条件:① 注册 ShowAPI 账号;② 在控制台「我的应用」创建应用拿到 `appKey`;③ 已开通成语词典(免费接口,通常默认可用)。 ## How:第一次调用 ### 步骤 1:拿到 AppKey 登录后进入 [AppKey 管理](https://www.showapi.com/console#/myApp),复制任意一个应用的 `appKey`。 ### 步骤 2:发起搜索请求(Python) ```python import requests APPKEY = "YOUR_APPKEY" url = "https://route.showapi.com/2964-1" params = {"appKey": APPKEY, "keyword": "守株待兔", "page": "1"} try: r = requests.get(url, params=params, timeout=10) r.raise_for_status() data = r.json() except requests.RequestException as e: print("请求失败:", e) raise body = data.get("showapi_res_body", {}) if body.get("ret_code") != 0: print("业务失败:", body.get("remark")) else: print("总数:", body.get("allNum"), "当前页:", body.get("currentPage")) for item in body.get("list", []): print(item["word"], item["id"]) ``` ### 步骤 3:用 cURL 验证 ```bash curl -X POST "https://route.showapi.com/2964-1?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "keyword=守株待兔&page=1" ``` ### 步骤 4:用 Node.js(fetch) 验证 ```javascript const APPKEY = "YOUR_APPKEY"; const params = new URLSearchParams({ appKey: APPKEY, keyword: "守株待兔", page: "1" }); fetch(`https://route.showapi.com/2964-1?${params}`, { method: "POST" }) .then(r => r.json()) .then(data => { const body = data.showapi_res_body; if (body.ret_code !== 0) { console.log("业务失败:", body.remark); return; } body.list.forEach(it => console.log(it.word, it.id)); }) .catch(e => console.error("请求失败:", e)); ``` ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "ret_code": 0, "remark": "查询成功!", "list": [ { "word": "守株待兔", "id": "b83eace0-ca55-4b0e-b85a-670d5604e1fc" } ], "maxResult": 20, "currentPage": 1, "allNum": 1, "allPages": 1 } } ``` | 字段 | 含义 | |------|------| | `showapi_res_body.ret_code` | 0 为成功,其他为失败 | | `list[].word` | 成语名 | | `list[].id` | 成语唯一 id,用于调「成语详情」拿释义 | | `allNum` / `allPages` | 命中总数 / 总页数,分页用 | | `maxResult` | 当前页返回条数上限 | ## 进阶 / 边界 - 搜索结果**只有成语名和 id,没有解释**。要展示拼音/解释/出处/示例,用 `id` 调 [成语详情(2964-2)](https://www.showapi.com/guides/idiom-search-detail-flow-2964)。 - `keyword` 支持部分匹配(如「株」也能命中「守株待兔」),详见[关键词与分页技巧](https://www.showapi.com/guides/idiom-search-keyword-tips-2964)。 - 免费服务仍有调用频率约束,生产环境建议加缓存,见[分页缓存策略](https://www.showapi.com/guides/idiom-pagination-cache-2964)。 ## FAQ **Q:报「appKey 错误」或鉴权失败怎么办?** 检查 AppKey 是否复制完整、是否混用了不同环境的应用;确认该应用已开通成语词典(免费接口一般默认可用)。 **Q:为什么 list 里只有成语名没有解释?** 搜索接口设计如此,释义在「成语详情」接入点。用 `id` 再调一次即可,见[两步流](https://www.showapi.com/guides/idiom-search-detail-flow-2964)。 **Q:返回 allNum 为 0 是什么情况?** 没有匹配该 keyword 的成语,或 keyword 为空。先确认 keyword 拼写,详见[关键词技巧](https://www.showapi.com/guides/idiom-search-keyword-tips-2964)。 **Q:免费接口需要购买资源包吗?** 不需要。免费服务直接调用,控制台拿到 AppKey 即可,无按次扣费。 ## 相关能力 / 下一步阅读 - [成语词典返回字段全解:showapi_res_body 与 ret_code 一文读懂](https://www.showapi.com/guides/idiom-dictionary-response-codes-2964) - [成语词典:从搜索到释义的两步流,搭建查词功能](https://www.showapi.com/guides/idiom-search-detail-flow-2964) - [成语搜索关键词怎么写才准?部分匹配 / 分页技巧](https://www.showapi.com/guides/idiom-search-keyword-tips-2964) - **本系列共 15 篇**:查看[成语词典(apiCode=2964)官方指南总目录](https://www.showapi.com/guides/idiom-dictionary-guides-2964)