技术博客
猜一猜谜语 API:5 分钟接入,调通你的第一条随机谜语

猜一猜谜语 API:5 分钟接入,调通你的第一条随机谜语

作者: 万维易源
2026-09-03
猜一猜谜语APIAPI快速接入Python示例免费接口
# 猜一猜谜语 API:5 分钟接入,调通你的第一条随机谜语 > 接口/接入点:猜一猜谜语 API · 随机查询谜语(151-2) · 免费 · 请求方式 POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟 ## 核心要点 - 注册并拿到 AppKey 后,向 `https://route.showapi.com/151-2?appKey=YOUR_APPKEY` 发一个表单请求即可拿到 20 条随机谜语。 - 接入点 151-2 只有一个可选参数 `typeId`(按类型筛选),不传则返回全类型随机谜语。 - 返回结构存在文档内部矛盾(详见进阶/边界),解析代码务必做防御性处理,推荐优先读 [返回字段全解](https://www.showapi.com/guides/riddle-response-fields-151)。 ## Why:这跟我有什么关系 想在 App、小程序、公众号、社群机器人里加一个"每日一谜""趣味答题"模块?猜一猜谜语 API 是**免费**的,注册即用,覆盖搞笑、字谜、成语、脑筋急转弯、智力问答等 26 类主题,省去你自己收集、清洗题库。本文帮你 5 分钟内发出第一次成功调用。 ## What:前置条件与接口速览 | 项 | 内容 | |----|------| | 接口地址 | `https://route.showapi.com/151-2?appKey=YOUR_APPKEY` | | 接入点 | 151-2 随机查询谜语 | | 请求方式 | POST / GET | | 鉴权 | query 参数 `appKey`(ShowAPI 控制台获取) | | 计费 | 免费(防滥用设档位限制,以官方 /free-api 为准) | | 返回格式 | JSON,业务数据在 `showapi_res_body` | | 集成能力 | MCP 服务、OpenAPI 3.0 文档(见 [MCP 接入](https://www.showapi.com/guides/riddle-mcp-151) / [OpenAPI 导入](https://www.showapi.com/guides/riddle-openapi-151)) | 前置条件:已注册 ShowAPI 账号并拥有 AppKey([AppKey 管理](https://www.showapi.com/console#/myApp))。 ## How:三步调通 ### 步骤 1 — 获取 AppKey 登录 ShowAPI 控制台 → 我的应用 → 复制 AppKey,替换下面代码中的 `YOUR_APPKEY`。 ### 步骤 2 — 发起请求(三语言任选) **Python(requests)** ```python import requests url = "https://route.showapi.com/151-2" params = {"appKey": "YOUR_APPKEY"} data = {"typeId": "gxmy"} # 可选:搞笑谜语;不传则返回全类型随机 try: resp = requests.post(url, params=params, data=data, timeout=10) resp.raise_for_status() body = resp.json() if body.get("showapi_res_code") != 0: print("系统级错误:", body.get("showapi_res_error")) else: rb = body["showapi_res_body"] # 注意:文档返回示例为 pagebean.contentlist(数组);OpenAPI schema 描述为单条扁平结构。 # 防御性解析:优先取数组,兼容扁平形态。 items = None if "pagebean" in rb and "contentlist" in rb.get("pagebean", {}): items = rb["pagebean"]["contentlist"] elif "contentlist" in rb: items = rb["contentlist"] elif "Title" in rb: items = [rb] for it in (items or []): print("谜面:", it.get("Title") or it.get("title")) print("谜底:", it.get("Answer") or it.get("answer")) print("类型:", it.get("typeName"), "\n") except requests.RequestException as e: print("请求失败:", e) ``` **cURL** ```bash curl -X POST "https://route.showapi.com/151-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "typeId=gxmy" ``` **Node.js(fetch)** ```javascript const url = "https://route.showapi.com/151-2?appKey=YOUR_APPKEY"; const body = new URLSearchParams({ typeId: "gxmy" }); fetch(url, { method: "POST", body, timeout: 10000 }) .then(r => r.json()) .then(json => { const rb = json.showapi_res_body; const pb = rb.pagebean || rb; const list = pb.contentlist || (rb.Title ? [rb] : []); list.forEach(it => { console.log("谜面:", it.Title || it.title); console.log("谜底:", it.Answer || it.answer); }); }) .catch(e => console.error("请求失败:", e)); ``` ### 步骤 3 — 解析返回 业务数据在 `showapi_res_body`。先用 `showapi_res_code` 判断系统级成败,再用 `ret_code`(在 `showapi_res_body` 内,`0` 为成功)判断业务成败,最后读取谜面/谜底。 ## 返回示例与解析 文档返回示例(节选)结构如下,每条含 `Title`(谜面)、`Answer`(谜底)、`typeId`、`typeName`: ```json { "showapi_res_code": 0, "showapi_res_body": { "pagebean": { "allNum": 20, "allPages": 1, "contentlist": [ { "Title": "问:有一头头朝北的牛…", "Answer": "答:朝地", "typeId": "zlmy", "typeName": "智力问答" } ], "currentPage": 1, "maxResult": 20 }, "ret_code": 0 } } ``` 字段表见 [返回字段全解](https://www.showapi.com/guides/riddle-response-fields-151)。 ## 进阶/边界 - **返回结构文档矛盾(重要)**:151-2 的"返回示例"是 `pagebean.contentlist`(20 条数组),但"返回体字段表"与 OpenAPI schema 却描述为单条扁平结构(`Title`/`Answer` 直接挂在 `showapi_res_body` 下,无 `pagebean`)。请以实际返回为准,代码做防御性解析(上文已示范)。完整对照见 [字段大小写避坑](https://www.showapi.com/guides/riddle-field-case-151)。 - 接入点 151-2 的 `Title`/`Answer` 为**首字母大写**;而 151-4 接入点是小写 `title`/`answer`,解析时别混用。 - 免费接口设档位限制,批量/高频调用前先看 [免费频控与缓存建议](https://www.showapi.com/guides/riddle-rate-limit-151)。 ## FAQ **Q1:返回 0 条或报错怎么办?** 先检查 `showapi_res_code` 与 `showapi_res_error`(系统级),再看 `showapi_res_body.ret_code`。免费接口若超出档位限制会被限流,确认 AppKey 有效且未超频。 **Q2:typeId 填什么值?** 26 类完整对照见 [类型清单](https://www.showapi.com/guides/riddle-typelist-151)。不传 `typeId` 则返回全类型随机谜语。 **Q3:接口收费吗?** 免费。注册后默认可调用,为防止滥用设档位限制,具体额度以官方 /free-api 为准,本文不编造数字。 **Q4:能按关键词搜谜语吗?** 随机查询(151-2)只支持按 `typeId` 类型筛选。按类型分页查询(151-4)同样**无关键词参数**,详见 [151-4 实战](https://www.showapi.com/guides/riddle-search-by-type-151)。 ## 相关能力 / 下一步阅读 - [猜一猜谜语 API 返回字段全解:三大接入点的 Title/Answer 与分页差异](https://www.showapi.com/guides/riddle-response-fields-151) - [猜一猜谜语 API 类型清单:26 类谜语 typeId 完整对照表](https://www.showapi.com/guides/riddle-typelist-151) - [用 MCP 在 AI 客户端里直接玩猜谜:Cherry Studio / ChatBox 接入 151](https://www.showapi.com/guides/riddle-mcp-151) - **本系列共 13 篇**:查看[猜一猜谜语 API 指南总目录](https://www.showapi.com/guides/riddle-guides-151)