金店参考价格:两步调用工作流——先查品牌 _id,再查实时价
# 金店参考价格:两步调用工作流——先查品牌 _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)