车型大全三级联动查询实战:品牌→车系→车型详情全链路设计
# 车型大全三级联动查询实战:品牌→车系→车型详情全链路设计
> 接口/接入点:车型大全(apiCode 1467)· 1467-1 / 1467-2 / 1467-3 串联 · 免费 · POST/GET · JSON · 适用人群:全栈工程师、产品经理 · 阅读时间:约 10 分钟
## 核心要点
- 车型大全天然是三级结构:1467-1 取品牌拿 `brand_id` → 1467-2 按 `brandId` 取车系拿 `series_id` → 1467-3 凭 `brandId`+`serieId` 取详情。
- 每一级的 Id 是下一级的入参,建议把"品牌→车系→车型"三张表在本地落库,避免每次实时三级联调。
- 车型详情有 `maxResults≤20` 上限和必填校验,前端做下拉级联时要先保证上级 Id 已拿到。
## Why
汽车类应用最常见的一个交互就是"选品牌 → 选车系 → 选车型"的三级下拉。车型大全的三个接入点正好对应这三步,但很多人卡在"Id 怎么串"。本文给你一套可直接落地的级联设计方案,含数据表结构与调用顺序。
## What
| 步骤 | 接入点 | 入参 | 取出给下一级的 Id |
|------|--------|------|------------------|
| 1 品牌 | 1467-1 | 无 | `brand_id` |
| 2 车系 | 1467-2 | `brandId`(建议用 Id 而非品牌名) | `series_id`、`model_id` |
| 3 详情 | 1467-3 | `brandId` + `serieId`(必填) | —(拿到具体款型配置) |
## How
### 步骤 1:建三张本地表(仅存 Id 与名称)
```sql
CREATE TABLE brand (brand_id VARCHAR(32) PRIMARY KEY, brand VARCHAR(64), initial CHAR(1));
CREATE TABLE series (series_id VARCHAR(32) PRIMARY KEY, brand_id VARCHAR(32), series VARCHAR(64), model VARCHAR(64), model_id VARCHAR(32));
CREATE TABLE model (model_id VARCHAR(32) PRIMARY KEY, brand_id VARCHAR(32), series_id VARCHAR(32), mod_type VARCHAR(128), nev TINYINT);
```
### 步骤 2:Python 串联三级调用
```python
import requests
APP_KEY = "YOUR_APPKEY"
BASE = "https://route.showapi.com"
def call(path, params):
r = requests.post(f"{BASE}/{path}", params={"appKey": APP_KEY, **params}, timeout=10)
body = r.json()["showapi_res_body"]
if body.get("ret_code") != "0":
raise RuntimeError(body.get("msg", "fail"))
return body
# 1) 品牌
brands = call("1467-1", {})["data"]
print([b["brand"] for b in brands[:3]])
# 2) 车系(用 brand_id 更稳,避免品牌名歧义)
brand = brands[0]
series = call("1467-2", {"brandId": brand["brand_id"]})["data"]
print(series[0]) # 含 series_id / model_id
# 3) 车型详情(brandId + serieId 必填)
serie = series[0]
detail = call("1467-3", {"brandId": brand["brand_id"], "serieId": serie["series_id"], "page": 1, "maxResults": 10})
print(detail["data"][0]["car_model"], detail["data"][0]["mod_type"])
```
### 步骤 3:前端级联下拉
先加载品牌下拉;选中品牌后调 1467-2 填充车系下拉;选中车系后调 1467-3 渲染车型款型与配置。每次上级变化时清空下级并重新请求。
## 返回示例与解析
见《车型大全返回字段全解》中的三级结构对照。`1467-2` 的 `data[]` 同时带有 `series`/`series_id` 和 `model`/`model_id`,可在二级下拉中直接展示"车系—车型"两级文本。
## 进阶/边界
- 优先用 `brand_id` 入参而非 `brandName`:品牌名可能存在歧义或别名,Id 才是稳定主键。
- 车型详情 `maxResults` 最大 20,大车系要翻页(`page` 递增)才能拉全;建议初始化时一次性落库,运行时不再实时三级联调。
- `1467-3` 的 `brandId` 与 `serieId` 缺一不可,前端务必在入参齐全后再发起请求。
## FAQ
**Q: 能不能跳过车系,直接用 brandId 拿车型详情?**
不能。车型详情要求 `brandId` + `serieId` 两个必填,必须先从 1467-2 取得 `series_id`。
**Q: brandName 和 brandId 用哪个?**
用 `brandId` 更稳。品牌名可能有歧义,Id 唯一且被三个接入点共用。
**Q: 车系查询一次返回很多车型,怎么不全?**
用 `page` + `maxResults` 翻页;`maxResults` 上限 20。初始化建库时循环翻页拉全。
## 相关能力 / 下一步阅读
- [车型大全车系查询怎么用:按品牌名或 brandId 拉出全部车系](https://www.showapi.com/guides/car-model-series-query-1467)
- [车型大全车型详情字段拆解:发动机/变速箱/底盘/安全配置怎么读](https://www.showapi.com/guides/car-model-detail-explain-1467)
- **本系列共 12 篇**:查看[车型大全 API 指南总目录](https://www.showapi.com/guides/car-model-guides-1467)