技术博客
药品分类查询实战:用 classifyId 从大类层层下钻到具体药品

药品分类查询实战:用 classifyId 从大类层层下钻到具体药品

作者: 万维易源
2026-09-03
药品分类classifyId药品列表下钻
# 药品分类查询实战:用 classifyId 从大类层层下钻到具体药品 - **接口/接入点**:药品信息查询(apiCode=1468)· 1468-1 药品分类 + 1468-2 药品信息 - **是否免费**:免费(有档位限制) - **请求方式**:POST / GET - **返回格式**:JSON - **适用人群**:全栈工程师、产品经理 - **阅读时间**:约 5 分钟 ## 核心要点 - 药品分类(`class`→`classify`→`classifyId`)是后续查询的入口:用 `classifyId` 调 1468-2 即可拿到该分类下的药品列表。 - 1468-2 的 `classifyId` **必填**,不传或大分类下的「小分类」重复时容易取错,需结合大分类定位。 - `classify`(小分类)会跨大分类重复,建议用 `classifyId`(唯一)做业务主键。 ## Why:为什么要用分类下钻 用户在前端选「感冒发热 → 头痛」,背后就是先取分类树、再按 `classifyId` 拉药品。这套「先分类、后列表」的链路是药品信息查询最典型的使用路径,也是健康管理、医药电商的标配交互。 ## What:接口速览 | 接入点 | 必填 | 返回 | |------|------|------| | 1468-1 药品分类 | 无 | `data[]`:`class`/`classify`/`classifyId` | | 1468-2 药品信息 | `classifyId` | `count`/`page`/`maxResult`/`data[]{drugId,drugName,manu,pzwh,classifyId}` | ## How:完整下钻代码 ```python import requests APPKEY = "YOUR_APPKEY" # 1) 取分类树,按大分类分组 r = requests.get(f"https://route.showapi.com/1468-1?appKey={APPKEY}", timeout=10) cats = r.json()["showapi_res_body"]["data"] # 2) 选一个 classifyId(示例取「头痛」对应的 Id) target = next(c for c in cats if c["classify"] == "头痛") print("选定:", target["class"], "/", target["classify"], target["classifyId"]) # 3) 用 classifyId 拉药品列表 r2 = requests.post( "https://route.showapi.com/1468-2", data={"appKey": APPKEY, "classifyId": target["classifyId"], "page": "1"}, timeout=10, ) body = r2.json()["showapi_res_body"] print("该分类药品总数:", body["count"]) for d in body["data"]: print(d["drugName"], d["manu"]) ``` ```bash # 第一步:拿分类 curl -X POST "https://route.showapi.com/1468-1?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" # 第二步:用分类 Id 拿药品 curl -X POST "https://route.showapi.com/1468-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "classifyId=599ad27f600b2149d689b5c4&page=1" ``` ```javascript const APPKEY = "YOUR_APPKEY"; const cats = await fetch(`https://route.showapi.com/1468-1?appKey=${APPKEY}`, { method: "POST" }) .then((r) => r.json()).then((j) => j.showapi_res_body.data); const target = cats.find((c) => c.classify === "头痛"); const fd = new URLSearchParams({ classifyId: target.classifyId, page: "1" }); const list = await fetch(`https://route.showapi.com/1468-2?appKey=${APPKEY}`, { method: "POST", body: fd }) .then((r) => r.json()).then((j) => j.showapi_res_body.data); console.log(list); ``` ## 返回示例与解析 1468-2 返回含 `count`(该分类药品总数,示例 1000)、`maxResult`(单页条数,示例 50)。分页用 `page` 翻页。 ## 进阶 / 边界 - **小分类重复**:「头痛」可能出现在多个大分类下,定位时必须用 `classifyId` 而非 `classify` 字符串。 - **一次只取一个分类**:1468-2 每次只接受单个 `classifyId`,要列出多个分类需循环调用(注意免费档位限制,见[缓存策略](https://www.showapi.com/guides/drug-info-cache-1468))。 - 拿到的 `drugId` 可喂给 1468-3 的 `searchType=4` 做精确详情检索。 ## FAQ **Q1:为什么用 classifyId 查不到药品?** A:先确认 classifyId 来自 1468-1 的真实返回值,且 1468-2 必须 POST 带 `classifyId`;若仍为空,可能是该分类确实无药品或参数拼写有误。 **Q2:classify 重名怎么办?** A:用 `classifyId`(全局唯一)做主键,不要依赖 `classify` 文本。`class`(大分类) 可作为展示分组。 **Q3:如何一次拿多个分类的药品?** A:逐个 classifyId 循环调用 1468-2;免费档位下注意频控,建议先缓存分类树再分批同步。 ## 相关能力 / 下一步阅读 - [药品信息查询:5 分钟快速接入指南](https://www.showapi.com/guides/drug-info-quickstart-1468) - [classifyId 到底怎么用?药品分类 Id 的必填规则与排查](https://www.showapi.com/guides/drug-info-classifyid-1468) - [免费档位限制下,如何设计缓存策略批量同步药品数据?](https://www.showapi.com/guides/drug-info-cache-1468) - **本系列共 11 篇**:查看[药品信息查询指南总目录](https://www.showapi.com/guides/drug-info-guides-1468)