技术博客
健康知识 API:分类列表怎么用?先拿分类 ID 再精准筛选

健康知识 API:分类列表怎么用?先拿分类 ID 再精准筛选

作者: 万维易源
2026-09-02
健康知识分类列表内容栏目
# 健康知识 API:分类列表怎么用?先拿分类 ID 再精准筛选 - **接口/接入点**:健康知识 · 分类列表 `90-86`(免费) - **请求方式**:POST / GET | **返回格式**:JSON | **鉴权**:URL 携带 `appKey` - **适用人群**:前端 / 全栈开发者、内容运营 | **阅读时间**:约 6 分钟 ## 核心要点 - 分类列表接口无业务参数,返回 `list`:`id`(分类 id)+ `name`(分类名称)。 - `id` 是后续搜索知识接口 `tid` 参数的输入,用来做分类筛选。 - 分类几乎不变,建议在服务端缓存,减少重复调用。 ## Why:为什么先取分类 健康内容的典型页面结构是"左侧分类导航 + 右侧内容列表"。分类列表接口正好提供这套导航的底层数据:你拿到 `id` 与 `name` 后,既能在前端渲染分类菜单,又能把用户选中的分类 `id` 透传给搜索知识接口做精准筛选。先取分类,是后续所有内容检索的起点。 ## What:接口速览 | 项目 | 说明 | |------|------| | 接口地址 | `https://route.showapi.com/90-86?appKey={your_appKey}` | | 请求参数 | 无业务参数(仅需鉴权 appKey) | | 返回 | `showapi_res_body.list`:`id`(number)、`name`(string) | | 超时 | 官方读写超时 5 秒 | ## How:获取分类并驱动前端导航 **Python(requests)** ```python import requests APP_KEY = "YOUR_APPKEY" URL = "https://route.showapi.com/90-86" resp = requests.post(URL, params={"appKey": APP_KEY}, timeout=10) data = resp.json() body = data["showapi_res_body"] categories = [{"id": c["id"], "name": c["name"]} for c in body["list"]] # categories 例如:[{"id":103,"name":"综合资讯"},{"id":101,"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}`; const data = await (await fetch(url, { method: "POST" })).json(); const categories = data.showapi_res_body.list.map((c) => ({ id: c.id, name: c.name })); ``` ### 用分类 id 驱动搜索筛选 把用户选中的分类 `id` 作为 `tid` 传入搜索知识接口(详见[搜索知识接入实战](https://www.showapi.com/guides/health-knowledge-search-90)): ```python # 用户选中了 id=101(疾病科普) search_url = "https://route.showapi.com/90-87" resp = requests.post( search_url, params={"appKey": APP_KEY}, data={"key": "感冒", "tid": "101", "page": "1"}, timeout=15, ) ``` ### 前端导航片段(示意) ```html <select id="cat"> <!-- options 由 categories 渲染 --> <option value="101">疾病科普</option> <option value="103">综合资讯</option> </select> ``` ## 返回示例与解析 ```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" } } ``` ## 进阶 / 边界 - **缓存分类**:分类列表几乎不变,建议在服务端缓存(如 Redis 或本地内存),按需 1 天刷新一次,既能提速又能省下免费额度(见[免费额度策略](https://www.showapi.com/guides/health-knowledge-free-quota-90))。 - **分类可能变动**:虽然变动频率低,但新增/下架分类时缓存需失效重拉,避免导航与检索不一致。 - **tid 为空**:搜索知识接口 `tid` 不传时按全部分类检索;传具体 `id` 才做分类筛选。 ## FAQ **Q:分类列表需要传任何参数吗?** A:不需要业务参数,只要鉴权 appKey 即可;文档也仅列了可选的 Header `content-type`,不影响调用。 **Q:分类 id 会变化吗?** A:通常稳定,但接口未承诺永久不变;建议做服务端缓存并定期刷新,不要在前端硬编码 id。 **Q:拿到分类后怎么用?** A:把选中的分类 `id` 作为搜索知识接口的 `tid` 参数,即可按分类筛选知识。 **Q:分类列表返回顺序固定吗?** A:以接口实际返回顺序为准,前端如需固定排序可自行处理。 ## 相关能力与下一步阅读 - [健康知识 API:搜索知识接入实战(关键词 / 分类 / 分页)](https://www.showapi.com/guides/health-knowledge-search-90) - [健康知识 API:5 分钟接入,获取每日健康养生内容](https://www.showapi.com/guides/health-knowledge-quickstart-90) - [健康知识 API 返回字段全解:分类列表 / 搜索结果 / 知识详情三大结构](https://www.showapi.com/guides/health-knowledge-fields-90) - **本系列共 12 篇**:查看[健康知识 API 使用指南总目录](https://www.showapi.com/guides/health-knowledge-guides-90)