YesApi 接口文档

3101 全国地址接口(支持级联) App.Common_Address.Choose

接口路径(新):http://hn216.api.yesapi.cn/api/App/Common_Address/Choose

接口路径(旧):http://hn216.api.yesapi.cn/?s=App.Common_Address.Choose

接口描述: 根据省份、城市、区县、乡镇、村庄,选择地址。选择时,优先以最具体的行政区为准,即:村庄最优先,省份最后。使用时,可依次从province_list中选择省份,从province里选择城市,从city里选择区域……

接口标签:免费(每月最高10万次)付费(包月/按量/私服)验签

特别注意:当前 hn216.api.yesapi.cn 为临时接口测试域名!请先完成 绑定独立接口域名后 ,才能正式进行API调用。

接口流量
1
请求协议
HTTP/HTTPS
请求方式
GET/POST(推荐POST)
编码格式
UTF-8
返回格式
JSON

在线测试接口    收藏此接口    在线接口开发    接口请求日记


接口参数 若无特殊说明,接口参数同时支持GET和POST传递;推荐:查询/删除用GET,创建/更新用POST。

参数名字参数类型是否必须默认值备注参数说明
app_key字符串必须最小:32公共参数 开发者应用的app_key,查看我的app_key,如果还没有,可免费注册开通。
sign字符串可选公共参数接口签名,其中:
  • 使用动态签名,签名生成算法请见:如何生成签名,或直接使用封装好的SDK开发包,通过在线测试工具可进行签名的对比和调试。
  • 使用静态签名点击获取我的静态签名
  • 关闭签名,如果不需要签名,可进入小白开放平台接口签名设置关闭或开启签名。
  • 定制签名支持专属签名算法定制开发
uuid字符串可选公共参数 UUID,当前登录的应用会员ID,即全局唯一用户ID,查看我的应用会员。传递此参数后,可以在开放平台查看每日活跃会员统计图表。uuid需要和token一起传递。
token字符串可选公共参数 当前登录会员的会话凭证,可通过会员登录接口获得。uuid需要和token一起传递。
return_data字符串可选0公共参数 数据返回结构,其中:
  • return_data=0,返回完整的接口结果,示例:{"ret":200,"data":{"err_code":0,"err_msg":"","title":"Hi YesApi,欢迎使用小白开放接口!"},"msg":"V3.1.0 YesApi App.Hello.World","_t": 1657513450, "_auth": "9bcd54ff53e71a1d80d37c52bdfabf76"}
  • return_data=1,返回简洁的接口结果,只返回data字段,结构简化一级,更扁平,示例:{"err_code":0,"err_msg":"V3.1.0 YesApi App.Hello.World","title":"Hi YesApi,欢迎使用小白开放接口!"}
province_code字符串可选省份编码
city_code字符串可选城市编码
area_code字符串可选区县编码
street_code字符串可选乡镇编码
village_code字符串可选村庄编码

在线测试

参数是否必填
s 固定
uuid 可选
token 可选
return_data 可选
province_code 可选
city_code 可选
area_code 可选
street_code 可选
village_code 可选

客户端请求示例

查看我的接口域名、app_key和app_secrect 客户端接入指南(如何生成签名) 开启/关闭签名

请求(第一个示例:从省份开始选择):
{你的接口域名}/?s=App.Common_Address.Choose&province_code=11&app_key={你的app_key}&sign={动态签名}

返回:
{
    "ret": 200,
    "data": {
        "err_code": 0,
        "err_msg": "",
        "province": {
            "code": "11",
            "name": "北京市",
            "next": [
                {
                    "code": "1101",
                    "name": "市辖区"
                }
            ]
        },
        "city": null,
        "area": null,
        "street": null,
        "village": null,
        "province_list": [
            {
                "code": "11",
                "name": "北京市"
            },
            {
                "code": "12",
                "name": "天津市"
            },
            // 略 ……
        ],
        "full_address": "北京市"
    },
    "msg": "当前请求接口:App.Common_Address.Choose"
}

请求(第二个示例:最后定位到具体的村庄的返回结果):
{你的接口域名}/?s=App.Common_Address.Choose&village_code=110101001010&app_key={你的app_key}&sign={动态签名}

返回:
{
    "ret": 200,
    "data": {
        "err_code": 0,
        "err_msg": "",
        "province": {
            "code": "11",
            "name": "北京市",
            "next": [
                {
                    "code": "1101",
                    "name": "市辖区"
                }
            ]
        },
        "city": {
            "code": "1101",
            "name": "市辖区",
            "next": [
                {
                    "code": "110101",
                    "name": "东城区"
                },
                {
                    "code": "110102",
                    "name": "西城区"
                },
                // 略 ……
            ]
        },
        "area": {
            "code": "110101",
            "name": "东城区",
            "next": [
                {
                    "code": "110101001",
                    "name": "东华门街道办事处"
                },
                {
                    "code": "110101002",
                    "name": "景山街道办事处"
                },
                // 略 ……
            ]
        },
        "street": {
            "code": "110101001",
            "name": "东华门街道办事处",
            "next": [
                {
                    "code": "110101001001",
                    "name": "多福巷社区居委会"
                },
                {
                    "code": "110101001002",
                    "name": "银闸社区居委会"
                },
                // 略 ……
            ]
        },
        "village": {
            "code": "110101001010",
            "name": "正义路社区居委会",
            "next": [
            ]
        },
        "province_list": [
            {
                "code": "11",
                "name": "北京市"
            },
            {
                "code": "12",
                "name": "天津市"
            },
            // 略 ……
        ],
        "full_address": "北京市市辖区东城区东华门街道办事处正义路社区居委会"
    },
    "msg": "当前请求接口:App.Common_Address.Choose"
}
<?php

// 引入文件
require_once dirname(__FILE__) . '/OkayApiClient.php';

// 调用小白开放接口(第一个示例:从省份开始选择):
$rs = OkayApiClient::request('App.Common_Address.Choose',array('province_code'=>'11'));

// 输出结果
print_r($rs);



/*
Array 
( 
	[ret] => 200 
	[data] => Array 
	( 
		[err_code] => 0 
		[err_msg] => 
		[province] => Array 
		( 
			[code] => 11 
			[name] => 北京市 
			[next] => Array 
			( 
				[0] => Array 
				( 
					[code] => 1101 
					[name] => 市辖区 
				) 
			) 
		) 
		[city] => 
		[area] => 
		[street] => 
		[village] => 
		[province_list] => Array 
		( 
			[0] => Array ( [code] => 11 [name] => 北京市 ) 
			[1] => Array ( [code] => 12 [name] => 天津市 ) 
			[2] => Array ( [code] => 13 [name] => 河北省 ) 
			//略
			[32] => Array ( [code] => 81 [name] => 香港特别行政区 ) 
			[33] => Array ( [code] => 82 [name] => 澳门特别行政区 ) 
		) 
		[full_address] => 北京市 
	)

	 [msg] => 小白开放接口:App.Common_Address.Choose 
)
*/



<?php

// 引入文件
require_once dirname(__FILE__) . '/OkayApiClient.php';

// 调用小白开放接口(第二个示例:最后定位到具体的村庄的返回结果)
$rs = OkayApiClient::request('App.Common_Address.Choose',array('village_code'=>'110101001010'));

// 输出结果
print_r($rs);


/*
Array 
( 
	[ret] => 200 
	[data] => Array 
	( 
		[err_code] => 0 
		[err_msg] => 
		[province] => Array 
		( 
			[code] => 11 
			[name] => 北京市 
			[next] => Array 
			( 
				[0] => Array ( [code] => 1101 [name] => 市辖区 ) 
			)
		 ) 
		[city] => Array 
		( 
			[code] => 1101 
			[name] => 市辖区 
			[next] => Array 
			( 
				[0] => Array ( [code] => 110101 [name] => 东城区 )  
				//略
				[15] => Array ( [code] => 110119 [name] => 延庆区 ) 
			) 
		) 
		[area] => Array 
		( 
			[code] => 110101 
			[name] => 东城区 
			[next] => Array 
			( 
				[0] => Array ( [code] => 110101001 [name] => 东华门街道办事处 ) 
				//略
				[16] => Array ( [code] => 110101017 [name] => 永定门外街道办事处 ) 
			) 
		) 
		[street] => Array 
		( 
			[code] => 110101001 
			[name] => 东华门街道办事处 
			[next] => Array 
			( 
				[0] => Array ( [code] => 110101001001 [name] => 多福巷社区居委会 )  
				 //略 
				[11] => Array ( [code] => 110101001015 [name] => 王府井社区居委会 ) 
			) 
		) 
		[village] => Array 
		( 
			[code] => 110101001010 
			[name] => 正义路社区居委会 
			[next] => Array ( ) 
		) 
		[province_list] => Array 
		( 
			[0] => Array ( [code] => 11 [name] => 北京市 ) 
			//略
			[33] => Array ( [code] => 82 [name] => 澳门特别行政区 )
		 ) 
		 [full_address] => 北京市市辖区东城区东华门街道办事处正义路社区居委会 
	) 
		
		[msg] => 小白开放接口:App.Common_Address.Choose 
)
*/


接口返回及数据结构

返回字段类型说明
ret整型接口状态码,200表示成功,4xx表示客户端非法请求,5xx表示服务端异常,查看异常错误码
dataobject/array/混合接口返回的业务数据,由不同的API接口决定不同的数据返回字段和结构。当return_data=1时,接口只会返回此data字段。
data.province对象省份信息(若有)
data.province.code字符串省份编码
data.province.name字符串省份名称
data.province.next字符串省份下的城市列表
data.city对象城市信息(若有)
data.city.code字符串城市编码
data.city.name字符串城市名称
data.city.next字符串城市下的区县列表
data.area对象区县信息(若有)
data.area.code字符串区县编码
data.area.name字符串区县名称
data.area.next字符串区县下的乡镇列表
data.street对象乡镇信息(若有)
data.street.code字符串乡镇编码
data.street.name字符串乡镇名称
data.street.next字符串乡镇下的村庄列表
data.village对象村庄信息(若有)
data.village.code字符串村庄编码
data.village.name字符串村庄名称
data.village.next字符串下一级列表
data.province_list字符串全国省份列表(固定返回)
data.province_list[].code字符串省份编码
data.province_list[].name字符串省份名称
data.full_address字符串完整的地址,例如:北京市市辖区东城区东华门街道办事处正义路社区居委会
msg字符串提示信息,面向技术人员的帮助或错误提示信息
_t整数服务器当时Unix时间戳,例如:1657513450
_auth字符串反向数字签名,可用于客户端进行反向验证,防止数据篡改,例如:9bcd54ff53e71a1d80d37c52bdfabf76。验证算法:_auth = md5(data返回的JSON字符串 + _t当前时间戳字符串 + APP_SECRECT密钥字符串),若需要关闭或开启请提交工单

ret异常错误码

错误码错误类型错误描述信息解决方法
ret = 200成功请求成功
ret = 400客户端非法请求表示客户端参数错误1、根据接口文档的接口参数,提供正确的参数
ret = 404客户端非法请求表示接口服务不存在1、查看小白接口大全,确保接口服务名称拼写正确
ret = 500小白接口异常表示服务端内部错误1、进入QQ交流群897815708,反馈问题;2、或者提交工单,一天内回复

常见问题FAQ

Q1 问:出现 414 Request-URI Too Large 时怎么解决?答:对于全部参数,改用POST方式传递,并且从GET链接里面去掉。

Q2 问:浏览器请求和在线测试接口正常,但本地程序无法正常获取接口结果答:需要注意UTF编码,以及存在中文和特殊字符时的URL编码。GET请求参数应统一进行URL编码后再请求,POST表单数据正常传递即可。

Q3 问:请求接口时提示JSON格式错误答:请先阅读,然后检测本地传递的参数是否符合JSON格式,使用JSON在线工具辅助检测,注意双引号和特殊符号。确认无误后再重新请求API接口。

Q4 问:出现 405 不允许跨域请求 时怎么办?答:可以追加GET参数 &yesapi_allow_origin=1,或参考用反向代理解决跨域问题等3种解决方案。

Q4 问:在wx内无法访问yesapi.cn或okayapi.com域名,怎么办?答:由于曾经短链跳转使用被wx误封域名,可以帮忙进行申诉。申诉后截图联系我们,获取15万次接口流量奖励。