健康知识 API:5 分钟接入,获取每日健康养生内容
# 健康知识 API:5 分钟接入,获取每日健康养生内容
- **接口/接入点**:健康知识 · 分类列表 `90-86`(免费)
- **请求方式**:POST / GET | **返回格式**:JSON | **鉴权**:URL 携带 `appKey`
- **适用人群**:新注册用户、初级开发者、内容运营 | **阅读时间**:约 8 分钟
## 核心要点
- 健康知识 API 是**免费**的内容型接口,注册后在控制台拿到 AppKey 即可调用,仅设防滥用档位限制。
- 三个接入点分工明确:先取**分类列表**,再用**搜索知识**检索,最后用**查看单条详情**拿长文。
- 调用只需一次 HTTP 请求,本文给出 Python / cURL / Node.js 三段可直接运行的代码。
## Why:这跟你有什么关系
如果你在做健康类 App、公众号、养生小程序,或想给产品加一个"每日养生"栏目,自己采编健康内容成本高、更新慢、权威性难保证。健康知识 API 提供每日更新的健康小知识、保健知识、男女老幼各群体健康内容与亚健康调理建议,接口免费、即调即用,适合做内容栏目的稳定上游。
## What:前置条件与接口速览
| 项目 | 说明 |
|------|------|
| 接口地址(分类列表) | `https://route.showapi.com/90-86?appKey={your_appKey}` |
| 请求方式 | POST / GET |
| 鉴权 | 在 URL 中携带 `appKey`(从控制台获取) |
| 返回格式 | JSON,业务数据在 `showapi_res_body` |
| 计费 | 免费(注册默认可用,有防滥用档位限制) |
| 集成 | MCP 服务、OpenAPI 文档、在线调试 |
前置条件:
1. 注册 ShowAPI 账号并登录控制台:https://www.showapi.com/console#/myApp
2. 创建一个应用,拿到 `appKey`
3. 确认接口为免费服务,默认可直接调用
## How:三步跑通第一次调用
### 步骤 1:获取 AppKey
在控制台「我的 App」中创建应用,复制 AppKey。下文用占位符 `YOUR_APPKEY` 代替,请替换为你自己的真实值。
### 步骤 2:调用分类列表(最轻量,先验证连通性)
分类列表接口无需任何业务参数,最适合做第一次连通性验证。
**Python(requests)**
```python
import requests
APP_KEY = "YOUR_APPKEY" # 替换为你的 ShowAPI AppKey
URL = "https://route.showapi.com/90-86"
try:
resp = requests.post(URL, params={"appKey": APP_KEY}, timeout=10)
resp.raise_for_status()
data = resp.json()
except requests.RequestException as e:
print("请求失败:", e)
raise
# 系统级校验
if data.get("showapi_res_code") != 0:
print("接口错误:", data.get("showapi_res_error"))
else:
body = data["showapi_res_body"]
if body.get("ret_code") != "0":
print("业务错误码:", body.get("ret_code"))
else:
for cat in body["list"]:
print(cat["id"], cat["name"])
```
**cURL**
```bash
curl -X POST "https://route.showapi.com/90-86?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded"
```
**Node.js(fetch)**
```javascript
const APP_KEY = "YOUR_APPKEY";
const url = `https://route.showapi.com/90-86?appKey=${APP_KEY}`;
try {
const resp = await fetch(url, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
});
const data = await resp.json();
if (data.showapi_res_code !== 0) {
console.error("接口错误:", data.showapi_res_error);
} else {
const body = data.showapi_res_body;
if (body.ret_code !== "0") {
console.error("业务错误码:", body.ret_code);
} else {
body.list.forEach((c) => console.log(c.id, c.name));
}
}
} catch (e) {
console.error("请求失败:", e);
}
```
### 步骤 3:解析返回并展示
分类列表返回 `list` 数组,每项含 `id`(分类 id)与 `name`(分类名称)。拿到 `id` 后即可传给搜索知识接口的 `tid` 参数做分类筛选(详见[搜索知识接入实战](https://www.showapi.com/guides/health-knowledge-search-90))。
## 返回示例与解析
```json
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_id": "ce135f6739294c63be0c021b76b6fbff",
"showapi_res_body": {
"list": [
{ "id": 103, "name": "综合资讯" },
{ "id": 101, "name": "疾病科普" }
],
"ret_code": "0"
}
}
```
- `showapi_res_code` 为 `0` 表示接口调用成功;
- `showapi_res_body.ret_code` 为 `"0"` 表示业务成功(建议按字符串比较,官方示例中也以数字 `0` 出现);
- `list` 即分类清单,前端可直接渲染为导航。
## 进阶 / 边界
- **免费但有限制**:接口免费、注册默认可用,但设有防止滥用的档位限制;具体档位阈值官方未公开数字,请以[官方档位说明](https://www.showapi.com/apiGateway/view/90)为准,不要假设无限量调用。
- **超时**:分类列表官方读写超时为 5 秒,建议客户端超时设置为 10 秒左右,失败时做有限重试。
- **下一步**:拿到分类后,用[搜索知识接入实战](https://www.showapi.com/guides/health-knowledge-search-90)做关键词检索。
## FAQ
**Q:这个接口真的免费吗?**
A:是的,官方标注为免费服务,注册后默认可调用,但设有防滥用档位限制;具体档位数字以官方档位说明为准,文档未公开具体阈值。
**Q:appKey 放在 URL 里安全吗?**
A:appKey 是接口鉴权凭证,建议仅在服务端调用、不要下发到前端公开代码;生产环境应走后端代理转发。
**Q:返回里的 showapi_res_code 和 ret_code 都要判断吗?**
A:建议都判断。`showapi_res_code` 是系统级状态(0 成功),`showapi_res_body.ret_code` 是业务级状态("0" 成功),两者为非 0 代表不同层面的失败。
**Q:分类列表返回空 list 怎么办?**
A:先确认 appKey 正确且接口可免费调用;若仍为空,可能是档位限制或临时异常,可查看 `showapi_res_error` 描述后联系服务商。
## 相关能力与下一步阅读
- [健康知识 API 返回字段全解:分类列表 / 搜索结果 / 知识详情三大结构](https://www.showapi.com/guides/health-knowledge-fields-90)
- [健康知识 API:搜索知识接入实战(关键词 / 分类 / 分页)](https://www.showapi.com/guides/health-knowledge-search-90)
- [健康知识 API:分类列表怎么用?先拿分类 ID 再精准筛选](https://www.showapi.com/guides/health-knowledge-category-90)
- **本系列共 12 篇**:查看[健康知识 API 使用指南总目录](https://www.showapi.com/guides/health-knowledge-guides-90)