技术博客
地区新闻接口区域查询:获取全国 34 个地区与 areaId 映射

地区新闻接口区域查询:获取全国 34 个地区与 areaId 映射

作者: 万维易源
2026-09-01
地区新闻接口区域查询areaId映射
# 地区新闻接口区域查询:获取全国 34 个地区与 areaId 映射 > 接口/接入点:地区新闻接口(apiCode 170)· 区域查询(170-48)|免费 · POST/GET · 返回 JSON · 适用人群:前端/后端开发者 · 阅读时间:约 5 分钟 ## 核心要点 - 接入点 48「区域查询」无业务参数,调用即返回全国地区列表 `cityList`(示例含 34 个,含北京/上海/香港/澳门/台湾等)。 - 每条含 `areaId`(稳定 ID)与 `areaName`(地区名),可直接当省份下拉框数据源。 - 数据「不变动,无特殊情况不会删减」,非常适合一次性缓存后长期使用。 ## Why:为什么要先调区域查询 接入点 47 支持用 `areaId` 精确查新闻,但 `areaId` 从哪来?就来自区域查询。先拉一次全量地区,缓存成「地区名 → areaId」映射,后续前端下拉、后端精确查询都靠它。这是「区域查询 → 拿 ID → 查新闻」标准链路的第一步。 ## What:接口速览 | 项 | 值 | |------|------| | 接口地址 | `https://route.showapi.com/170-48?appKey={your_appKey}` | | 请求方式 | POST / GET | | 业务参数 | 无 | | 返回关键字段 | `cityList[]`(`areaId`、`areaName`)、`ret_code`;示例另含 `totalNum`(参数表未列,但真实返回存在) | | 更新频率 | 不变动,无特殊情况不会删减 | ## How:拉取并缓存地区映射 **Python:拉取并落成本地映射** ```python import requests, json r = requests.post("https://route.showapi.com/170-48", params={"appKey":"YOUR_APPKEY"}, headers={"content-type":"application/x-www-form-urlencoded"}, timeout=10) body = r.json()["showapi_res_body"] if body.get("ret_code") != "0": raise RuntimeError("区域查询失败") name_to_id = {c["areaName"]: c["areaId"] for c in body["cityList"]} # 缓存到文件,下次直接读,不必重复调用 with open("area_map.json","w",encoding="utf-8") as f: json.dump(name_to_id, f, ensure_ascii=False, indent=2) print("共", len(name_to_id), "个地区") ``` **cURL** ```bash curl -X POST "https://route.showapi.com/170-48?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" ``` **Node.js(fetch)** ```js const r = await fetch("https://route.showapi.com/170-48?appKey=YOUR_APPKEY",{ method:"POST", headers:{"content-type":"application/x-www-form-urlencoded"} }); const d = await r.json(); const map = Object.fromEntries(d.showapi_res_body.cityList.map(c=>[c.areaName,c.areaId])); console.log("共", d.showapi_res_body.cityList.length, "个地区"); ``` ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "cityList": [ {"areaId":"55818af5085b7bc0c73836b4","areaName":"北京"}, {"areaId":"55818af5085b7bc0c73836b5","areaName":"上海"}, {"areaId":"55818af7085b7bc0c73836cb","areaName":"香港"}, {"areaId":"55818af7085b7bc0c73836cc","areaName":"澳门"}, {"areaId":"55818af7085b7bc0c73836ce","areaName":"台湾"} ], "ret_code": 0, "totalNum": 34 } } ``` - `cityList`:地区数组,`areaName` 是展示名,`areaId` 是传给接入点 47 的稳定 ID。 - `totalNum`:示例返回 34,代表地区总数(参数表未列此字段,但真实返回中存在,可作为地区计数参考)。 ## 进阶 / 边界 - **建议启动时拉一次 + 长期缓存**:因为数据基本不变,没必要每次请求都调。 - `areaId` 是稳定标识,用它查新闻比用 `areaName` 更可靠(避免地名别名/错别字导致过滤失效)。 ## FAQ **Q:区域查询需要传地区参数吗?** A:不需要,接入点 48 无任何业务参数,调用即返回全国地区列表。 **Q:totalNum 在文档参数表里没看到?** A:是的,参数表未列 `totalNum`,但官方返回示例中包含(值为 34)。本文按真实返回如实标注,可当作地区总数参考。 **Q:返回的 areaId 会变化吗?** A:文档说明该数据「不变动,无特殊情况不会删减」,可作为稳定映射长期使用,但仍建议保留定期刷新机制以防极端变更。 ## 相关能力与下一步阅读 - [地区新闻接口:areaId 与 areaName 怎么选,先用区域查询拿 ID 再查新闻](https://www.showapi.com/guides/region-news-areaid-areaname-170) - [地区新闻接口:按地区/标题查新闻的参数使用指南](https://www.showapi.com/guides/region-news-query-by-area-170) - **本系列共 12 篇**:查看[地区新闻接口(apiCode 170)官方指南总目录](https://www.showapi.com/guides/region-news-guides-170)