技术博客
地址录入与校验方案:用行政区划查询规范用户填地址

地址录入与校验方案:用行政区划查询规范用户填地址

作者: 万维易源
2026-08-31
行政区划查询地址校验区号邮编
# 地址录入与校验方案:用行政区划查询规范用户填地址 > 接口 / 接入点:行政区划查询(apiCode 1149)· 区域查询 1149-1 / 子区域查询 1149-2 · 免费服务 > 请求方式:POST / GET · 返回格式:JSON · 适用人群:电商 / 物流 / 政务表单系统开发者 · 阅读时间:约 7 分钟 ## 核心要点 - 用「省市区三级联动 + 区号 / 邮编自动带出」,把用户自由填地址变成「选 + 补全」,大幅减少脏数据。 - 行政区划查询返回 `areaCode`(区号)、`zipCode`(邮编),选中区域即可自动回填。 - 免费、数据跟随民政部,比维护静态字典更省心。 ## Why:地址脏数据有多贵 电商 / 物流最怕「省写错、区号邮编对不上、乡镇名五花八门」。自由输入框里用户手抖一个字,后端分拣就可能失败、快递就可能送错。用行政区划查询做联动选择,用户只管点,区号邮编系统自动带,地址结构天然规范。 ## What:方案构成 | 能力 | 来自字段 | 作用 | |------|---------|------| | 三级联动选择 | 1149-1 + 1149-2(见[三级联动篇](https://www.showapi.com/guides/region-query-cascade-1149)) | 规范省 / 市 / 区 | | 区号自动带出 | `areaCode` | 校验电话区号、展示 | | 邮编自动带出 | `zipCode` | 物流 / 邮政场景直接填 | | 全称展示 | `wholeName` | 如「中国,广东省,深圳市」 | ## How:选中后自动带出区号邮编 ### Python ```python import requests def pick_district(parent_city_id): r = requests.get("https://route.showapi.com/1149-2", params={"appKey": "YOUR_APPKEY", "parentId": parent_city_id, "page": "1"}, timeout=10) return r.json()["showapi_res_body"]["data"] # 用户选了「深圳市」后,拉下属区并带出区号/邮编 for d in pick_district("440300000000"): print(d["areaName"], "区号", d["areaCode"], "邮编", d["zipCode"], "全称", d["wholeName"]) ``` ### 前端(选中即回填) ```javascript sel.onchange = async () => { const body = await fetch(`https://route.showapi.com/1149-2?appKey=YOUR_APPKEY&parentId=${sel.value}`) .then(r => r.json()).then(d => d.showapi_res_body); const o = body.data.find(x => x.id === subSel.value) || body.data[0]; document.getElementById("areaCode").value = o.areaCode; document.getElementById("zipCode").value = o.zipCode; }; ``` ### cURL ```bash curl -X POST "https://route.showapi.com/1149-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "parentId=440300000000&page=1" ``` ## 返回示例(区带区号邮编) ```json { "showapi_res_body": { "ret_code": "0", "data": [ {"areaName": "福田区", "areaCode": "0755", "zipCode": "518000", "wholeName": "中国,广东省,深圳市,福田区", "id": "440304000000"} ] } } ``` ## 进阶 / 边界 - **联动选择优先于自由输入**:把区号 / 邮编设为「选中自动带出、只读」,避免用户手填错配。 - **乡镇 / 村一级**:需要更细时回到区域查询设 `level=4/5` 或用子区域查询继续下钻。 - **数据更新**:每月同步民政部,逢区划调整(撤县设区等)自动跟上,无需你手动改字典。 ## FAQ **Q:区号和邮编能直接信接口的吗?** 接口跟随民政部数据返回,可作为权威来源;展示 / 回填时直接采用即可。 **Q:用户手填的地址怎么校验?** 建议交互改为「三级联动 + 自动带出」,从源头规范;若必须校验自由文本,可用区域查询按名称反查比对。 **Q:乡镇一级也有区号邮编吗?** 子区域查询返回 `areaCode` / `zipCode`,乡镇级数据视区域而定,缺失时做空值兜底。 **Q:免费接口能做生产地址校验吗?** 可以。免费不影响使用;生产建议走后端代理调用(见三级联动篇),AppKey 不暴露在前端。 ## 相关能力 / 下一步阅读 - [行政区划查询实战:省市区三级联动选择器前端实现](https://www.showapi.com/guides/region-query-cascade-1149) - [免费接口也要缓存:行政区划查询低频更新下的缓存设计](https://www.showapi.com/guides/region-query-cache-1149) - **本系列共 11 篇**:查看[行政区划查询指南总目录](https://www.showapi.com/guides/region-query-guides-1149)