技术博客
金店参考价格:两步调用工作流——先查品牌 _id,再查实时价

金店参考价格:两步调用工作流——先查品牌 _id,再查实时价

作者: 万维易源
2026-09-03
金店参考价格金价查询免费接口ShowAPI指南
# 金店参考价格:两步调用工作流——先查品牌 _id,再查实时价 > 接口 2145(金店参考价格)· 免费 · 接入点 2145-1 + 2145-2 · 返回 JSON · 阅读时间约 4 分钟 ## 核心要点 - 金店参考价格拆成两个接入点:2145-1 给品牌清单,2145-2 按 _id 给金价。 - _id 是两步之间的唯一关联键,必须来自 2145-1 的真实返回。 - 把两步封装成一个函数,对外只暴露「品牌名 → 金价」更省心。 ## Why:这跟我有什么关系 很多新手第一次用时直接拿品牌名去调 2145-2,结果报错。理解「两步依赖」是接好这个接口的关键:品牌清单和实时价是分开的两个接入点。 ## What:前置条件与接口速览 **数据流** ``` [2145-1 支持金店] --返回 data[{_id, brand}]--> 选一个 _id | v [2145-2 最新价格] <--传 id=_id--> 返回 {goldPrice, platinumPrice, ...} ``` | 接入点 | 入参 | 出参 | |---|---|---| | 2145-1 | 无 | data[](_id + brand) | | 2145-2 | id(必须,来自 2145-1) | goldPrice / platinumPrice / 日期 | ## How:接入步骤 **封装示例(把两步合成一步)** ```python import requests def get_gold_price(appkey, brand_name=None): # 步骤 1:拉品牌清单 r1 = requests.post("https://route.showapi.com/2145-1", params={"appKey": appkey}, timeout=10).json() brands = r1["showapi_res_body"]["data"] # 步骤 2:定位目标品牌 _id(不传 brand_name 则取第一个) target = next((b for b in brands if brand_name in b["brand"]), brands[0]) # 步骤 3:用 _id 查价 r2 = requests.post("https://route.showapi.com/2145-2", params={"appKey": appkey}, data={"id": target["_id"]}, timeout=10).json() body = r2["showapi_res_body"] if body["ret_code"] == 0: return target["brand"], body["goldPrice"], body["platinumPrice"] return None # ret_code == -1:未找到 ``` ## 返回示例与解析 **正确调用** ```bash curl -X POST "https://route.showapi.com/2145-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "id=5da958ead3fb8b0eefc6a3d2" ``` **错误示范**(直接猜 _id)会返回 ret_code -1。务必先走 2145-1。 ## 进阶 / 边界 - 文档两个示例 _id 不同品牌(2145-1 示例潮宏基、2145-2 示例周大生),千万别把示例 id 当成通用钥匙。 - 品牌清单(2145-1)每年不定期更新一次,可本地缓存;金价(2145-2)每天 13:40 更新,需按时刷新。 - 若需全品牌金价,遍历 2145-1 的 data[] 逐个调 2145-2(注意免费档位限流,见[缓存策略](https://www.showapi.com/guides/gold-price-cache-cost-2145))。 ## FAQ **Q:能按品牌名直接查价吗?** 不能。2145-2 只接受品牌 _id,而 _id 来自 2145-1 的返回。必须先查清单再查价。 **Q:ret_code -1 一定是 _id 错了吗?** 在 2145-2 中 -1 表示没有找到该品牌。最常见原因是 _id 抄错或品牌已下架,先回 2145-1 核对最新 _id。 **Q:两个接入点可以合并请求吗?** 不能,接口设计上就是两步。但可以在代码里封装成一个函数,对业务层透明。 ## 相关能力 / 下一步阅读 - [金店参考价格:5 分钟接入](https://www.showapi.com/guides/gold-price-quickstart-2145) - [金店参考价格:返回字段与状态码全解](https://www.showapi.com/guides/gold-price-response-codes-2145) - [金店参考价格:支持金店接入点(2145-1)使用指南](https://www.showapi.com/guides/gold-price-brand-list-2145) - **本系列共 12 篇**:查看[金店参考价格 · 官方指南总目录](https://www.showapi.com/guides/gold-price-guides-2145)