技术博客
classifyId 到底怎么用?药品分类 Id 的必填规则与排查

classifyId 到底怎么用?药品分类 Id 的必填规则与排查

作者: 万维易源
2026-09-03
classifyId必填规则参数排查
# classifyId 到底怎么用?药品分类 Id 的必填规则与排查 - **接口/接入点**:药品信息查询(apiCode=1468)· 1468-1 / 1468-2 / 1468-3 - **是否免费**:免费(有档位限制) - **请求方式**:POST / GET - **返回格式**:JSON - **适用人群**:中高级开发者 - **阅读时间**:约 4 分钟 ## 核心要点 - `classifyId` 来自 1468-1 药品分类接口的 `data[].classifyId`,是「药品小分类」的唯一 Id。 - 它在三个接入点规则不同:**1468-2 必填**;**1468-3 在 searchType=1/2 时必填**;1468-1 不产生、1468-4 不需要。 - 排查「查不到」时优先核对 classifyId 是否来自 1468-1 真实返回值,且用 Id 而非名称。 ## Why:为什么 classifyId 容易踩坑 小分类名称(`classify`)会跨大分类重复(多个大分类下都可能有「头痛」),用名称定位必然出错;而 `classifyId` 唯一。很多工单都源于「拿错 Id」或「该传没传」。 ## What:三个接入点的 classifyId 规则 | 接入点 | classifyId 规则 | |------|------| | 1468-1 药品分类 | 不产生;其返回 `data[]` 即 classifyId 的来源 | | 1468-2 药品信息 | **必填** | | 1468-3 药品详细信息 | searchType=1/2 时**必传**;3/4 时可不传 | | 1468-4 药名查询 | 不需要 | ## How:正确获取与使用 ```python import requests APPKEY = "YOUR_APPKEY" # 从 1468-1 取真实 classifyId(不要用写死的名称) cats = requests.get(f"https://route.showapi.com/1468-1?appKey={APPKEY}", timeout=10) \ .json()["showapi_res_body"]["data"] by_id = {c["classifyId"]: c for c in cats} # 1468-2 必填 cid = "599ad2a0600b2149d689b75a" r2 = requests.post("https://route.showapi.com/1468-2", data={"appKey": APPKEY, "classifyId": cid, "page": "1"}, timeout=10) print(r2.json()["showapi_res_body"]["count"]) # 1468-3 searchType=1/2 必传 r3 = requests.post("https://route.showapi.com/1468-3", data={"appKey": APPKEY, "searchType": "1", "searchKey": "布洛芬片", "classifyId": cid, "page": "1"}, timeout=10) print(r3.json()["showapi_res_body"].get("drugList")) ``` ## 返回示例与解析 1468-1 返回示例:`{ "class": "感冒发热", "classify": "头痛", "classifyId": "599ad27f600b2149d689b5c4" }`。请缓存这层映射,业务侧只存 `classifyId`。 ## 进阶 / 边界 - 不要假设 `classifyId` 是连续数字——它是类似 `599ad27f...` 的哈希串,必须动态取自 1468-1。 - 1468-2 每次只接受一个 classifyId;多分类需循环(注意免费档位,见[缓存策略](https://www.showapi.com/guides/drug-info-cache-1468))。 ## FAQ **Q1:1468-3 不传 classifyId 报错吗?** A:文档规定 searchType=1/2 时必传;searchType=3/4(药准字号/药品Id)可不传。是否显式报错取决于服务端,生产环境建议按规则传全。 **Q2:classifyId 能写死在代码里吗?** A:不建议。它是数据侧 Id,可能随数据源调整;应从 1468-1 动态获取并缓存。 **Q3:为什么我用 classifyId 查到的药品和预期分类对不上?** A:多半是拿了重复 `classify` 名对应的错误 Id。用 `classifyId` 唯一值定位,并核对 `class`(大分类)。 ## 相关能力 / 下一步阅读 - [药品分类查询实战:用 classifyId 层层下钻到具体药品](https://www.showapi.com/guides/drug-info-classification-1468) - [药品详细信息检索:searchType 四种类型与 classifyId 必填规则](https://www.showapi.com/guides/drug-info-detail-search-1468) - [免费档位限制下,如何设计缓存策略批量同步药品数据?](https://www.showapi.com/guides/drug-info-cache-1468) - **本系列共 11 篇**:查看[药品信息查询指南总目录](https://www.showapi.com/guides/drug-info-guides-1468)