周公解梦 API:关键词怎么查才准?关键词选取与结果解读实战
# 周公解梦 API:关键词怎么查才准?关键词选取与结果解读实战
> 接口:免费解梦详细(apiCode 1601)· 接入点:解梦详细(1601-2)· **免费** · 参数 `keyWords`(必填)+ `page`(选填)· 适用人群:内容/工具类开发者、产品经理 · 阅读约 7 分钟
## 核心要点
- `keyWords` 是**单值关键词**,不是整句自然语言;传「梦见被追杀」不会自动分词,应抽取「追杀」「疯子」这类词再查。
- 返回 `contentlist` 每项含 `name`(命中的梦境词条)与 `detailList`(该词条的多段解读),可据此做前端展示。
- 同一关键词可能命中多个词条(如「飞」命中「疯子」「疯子追杀我」),按 `allNum`/`allPages` 决定要不要翻页。
## Why:这跟我有什么关系
用户不会乖乖输入「疯子」,他们说的是「我昨晚梦到有人追着我跑」。如果你把整句话塞进 `keyWords`,基本查不到。本文讲清「用户口语 → 关键词 → 调用 → 渲染」这条链路怎么落地。
## What:前置条件与接口速览
| 项目 | 说明 |
|------|------|
| 接口地址 | `https://route.showapi.com/1601-2?appKey={your_appKey}` |
| 必填参数 | `keyWords`(String,梦境关键词,如「飞」「疯子」「追杀」) |
| 选填参数 | `page`(String,页码,默认 1) |
| 返回关键字段 | `contentlist[].name`、`contentlist[].detailList`、`allNum`、`allPages` |
| 接入点说明 | 内容参考《周公解梦全书》部分信息,提供解读参考(文化参考,非科学/医疗结论) |
## How:从一句话到一段解读
**步骤 1 — 抽取关键词**:用简单规则或词典把用户口语映射到梦境词。下面示例用最小词典做演示(真实生产可用更全的词表)。
```python
import requests, re
APP_KEY = "YOUR_APPKEY"
URL = "https://route.showapi.com/1601-2"
# 极简梦境词表(示意,可按需扩充)
DREAM_WORDS = ["疯子", "追杀", "蛇", "水", "飞", "考试", "掉牙", "结婚", "死亡", "钱"]
def extract_keyword(text: str) -> str:
for w in DREAM_WORDS:
if w in text:
return w
# 兜底:取最后一个词或原句首词
return text.strip().split()[-1] if text.strip() else "飞"
def interpret(text: str, page: str = "1"):
kw = extract_keyword(text)
resp = requests.post(
URL, params={"appKey": APP_KEY},
data={"keyWords": kw, "page": page},
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=10,
)
data = resp.json()
if data.get("showapi_res_code") != 0:
raise RuntimeError(data.get("showapi_res_error"))
body = data["showapi_res_body"]
if body.get("ret_code") != "0":
raise RuntimeError(f"ret_code={body.get('ret_code')}")
return kw, body
kw, body = interpret("我昨晚梦到被疯子追杀")
print("抽取关键词:", kw, "| 命中条数:", body["allNum"], "| 总页:", body["allPages"])
for item in body.get("contentlist", []):
print("\n【", item["name"], "】")
for line in item["detailList"]:
print(" -", line)
```
**步骤 2 — 调用并渲染**:`item["name"]` 作标题,`item["detailList"]` 作段落列表,按需折叠「原版周公解梦 / 心理学解梦 / 案例分析」等长文本。
**cURL(关键词「追杀」)**
```bash
curl -X POST "https://route.showapi.com/1601-2?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "keyWords=%E8%BF%BD%E6%9D%80&page=1"
```
**Node.js(fetch)**
```javascript
const APP_KEY = "YOUR_APPKEY";
const keyword = "追杀"; // 已抽好的关键词
const url = `https://route.showapi.com/1601-2?appKey=${APP_KEY}`;
const res = await fetch(url, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ keyWords: keyword, page: "1" }),
});
const data = await res.json();
const body = data.showapi_res_body;
for (const item of body.contentlist || []) {
console.log("【", item.name, "】");
(item.detailList || []).forEach((l) => console.log(" -", l));
}
```
## 返回示例与解析
以 `keyWords=飞&page=1` 为例,`contentlist` 命中「疯子」「疯子追杀我」两个词条,每个词条 `detailList` 内含多角度解读(原版周公解梦、梦境解析、心理学解梦、案例分析等)。前端可将每个词条渲染为一张卡片。
## 进阶 / 边界
- **关键词是单值,不会自动分词**:务必先把用户口语映射成词典词再查,否则命中为空或偏差大。
- **一个词可能命中多条**:如「飞」同时命中「疯子」「疯子追杀我」,用 `allNum`/`allPages` 判断是否需要翻页(见《[分页与结果集怎么用](https://www.showapi.com/guides/dream-pagination-1601)》)。
- **内容属文化参考**:`detailList` 来自《周公解梦全书》类资料,展示时加「仅供娱乐参考」提示,不要当作科学/医疗结论。
- **免费有档位限制**:同一关键词高频重复请求会吃档位,建议对 `(keyWords, page)` 做短缓存(见《[免费档位与调用限制说明](https://www.showapi.com/guides/dream-free-tier-1601)》)。
## FAQ
**Q1:用户输一整句话查不到怎么办?**
接口按单关键词检索,不会自动分词。先用词表/规则抽取梦境词(如「追杀」「蛇」)再查;抽不到时给友好提示而非空结果。
**Q2:一个关键词返回好几条,先展示哪条?**
`contentlist` 顺序即接口返回顺序,可按需展示第一条或全列;用 `allNum` 提示「共 N 条」。
**Q3:`detailList` 内容太长怎么展示?**
可首屏展示前 1~2 句,其余折叠;或按「原版/心理学/案例」分段。文本结构由你控制。
**Q4:关键词带特殊字符或表情会怎样?**
按 URL 编码规范传参即可;异常时 `ret_code` 非 0,按失败处理。
**Q5:能不能中文之外查别的?**
接口按中文梦境词检索,建议统一用中文关键词。
## 相关能力 / 下一步阅读
- [周公解梦 API 返回字段全解:ret_code、contentlist、分页字段一文读懂](https://www.showapi.com/guides/dream-response-fields-1601)
- [周公解梦 API:分页与结果集怎么用?maxResult/allNum/allPages 详解](https://www.showapi.com/guides/dream-pagination-1601)
- [周公解梦 API 应用场景:娱乐 App / 内容社区 / 客服如何嵌入梦境解读?](https://www.showapi.com/guides/dream-scenarios-1601)
- **本系列共 8 篇**:查看[周公解梦 API 指南总目录](https://www.showapi.com/guides/dream-guides-1601)