- HTTP 请求
- 请求正文
- 响应正文
- 邮政地址
- ValidationResult
- 认定结果
- 粒度
- 地址
- AddressComponent
- 组件名称
- 确认级别
- 地理编码
- LatLng
- PlusCode
- 视口
- AddressMetadata
- UspsData
- UspsAddress
验证地址。
HTTP 请求
POST https://addressvalidation.googleapis.com/v1:validateAddress
网址采用 gRPC 转码语法。
请求正文
请求正文中包含结构如下的数据:
JSON 表示法 |
---|
{
"address": {
object ( |
字段 | |
---|---|
address |
必需。正在验证的地址。无格式地址应通过 此输入中的字段总长度不得超过 280 个字符。 如需了解支持的地区,请参阅常见问题解答。 输入地址中的 Address Validation API 会忽略 |
previousResponseId |
对于第一个地址验证请求,此字段必须为空。如果需要更多请求才能完整验证单个地址(例如,用户需要重新验证初始验证后所做的更改),则每个后续请求都必须使用验证序列中第一个响应中的 |
enableUspsCass |
启用 USPS CASS 兼容模式。这只会影响 建议使用组件化的 |
响应正文
如果成功,响应正文将包含结构如下的数据:
对地址验证请求的响应。
JSON 表示法 |
---|
{
"result": {
object ( |
字段 | |
---|---|
result |
地址验证的结果。 |
responseId |
用于标识此响应的 UUID。如果需要重新验证地址,则此 UUID 必须随新请求一起提供。 |
PostalAddress
表示邮政地址,例如邮政递送或付款地址。给定邮政地址时,邮政服务可以将物品投递到处所、邮政信箱或其他投递地点。此对象不模拟地理位置(道路、城镇、山区)。
在典型的使用场景中,地址将通过用户输入或导入现有数据来创建,具体取决于进程的类型。
有关输入/修改地址的建议:使用国际化地址微件,例如 https://github.com/google/libaddressinput。在使用某个字段的国家/地区之外,不应向用户显示用于输入或修改该字段的界面元素。
如需详细了解如何使用此架构,请参阅:https://support.google.com/business/answer/6397478
JSON 表示法 |
---|
{ "revision": integer, "regionCode": string, "languageCode": string, "postalCode": string, "sortingCode": string, "administrativeArea": string, "locality": string, "sublocality": string, "addressLines": [ string ], "recipients": [ string ], "organization": string } |
字段 | |
---|---|
revision |
|
regionCode |
(可选)地址的国家/地区的 CLDR 地区代码。如需了解详情,请参阅 https://cldr.unicode.org/ 和 https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html。示例:“CH”(瑞士)。如果未提供区号,则根据该地址推断出来。为获得最佳性能,建议您添加区域代码(如果您知道的话)。地区不一致或重复地区可能会导致性能不佳,例如,如果 |
languageCode |
输入地址中的语言代码已预留,以供日后使用,今天会被忽略。API 会以地址所在位置的相应语言返回地址。 |
postalCode |
(可选)地址的邮政编码。并非所有国家/地区都使用或要求使用邮政编码,但在使用邮政编码时,它们可能会触发地址其他部分的额外验证(例如美国的州/邮政编码验证)。 |
sortingCode |
(可选)特定于国家/地区的额外排序代码。大多数区域都未使用此功能。在使用它的地方,此值可以是一个类似“CEDEX”的字符串,后面可能会跟一个数字(例如“CEDEX 7”),或者只有一个数字,代表“管制区代码”(牙买加),“投递区域指标”(马拉维)或“邮局指标”(例如科特迪瓦)。 |
administrativeArea |
(可选)最高行政区划,用于国家或地区的邮政地址。例如,此值可以是州、省、州(俄罗斯)或县。具体来说,对于西班牙,此值为省而非自治区(例如此值为“巴塞罗那”而非“加泰罗尼亚”)。许多国家在邮政地址中不使用行政区划。例如对于瑞士,此字段应留空。 |
locality |
(可选)一般是指地址的城市/城镇部分。示例:美国的城市、意大利的市镇、英国的邮镇。对于没有明确定义 locality 或者其无法很好地对应这个结构的区域,应将 locality 留空并使用 address_lines。 |
sublocality |
(可选)地址的子级市行政区。例如,此值可以是社区、自治市/镇/区、行政区。 |
addressLines[] |
必需。描述详细地址的非结构化地址行。 |
recipients[] |
请避免设置此字段。Address Validation API 目前不使用它。虽然此时该 API 不会拒绝设置了此字段的请求,但信息将被舍弃,不会在响应中返回。 |
organization |
请避免设置此字段。Address Validation API 目前不使用它。虽然此时该 API 不会拒绝设置了此字段的请求,但信息将被舍弃,不会在响应中返回。 |
ValidationResult
验证地址的结果。
JSON 表示法 |
---|
{ "verdict": { object ( |
字段 | |
---|---|
verdict |
总体认定结果标记 |
address |
与地址本身(而非地理编码)相关的信息。 |
geocode |
地址的地理编码位置和地点的相关信息。 |
metadata |
与交付情况相关的其他信息。对于发送到 Address Validation API 的每个地址,不能保证 |
uspsData |
由 USPS 提供的其他可交付性标记。仅在区域 |
判定
地址验证结果和地理编码的简要概览。
JSON 表示法 |
---|
{ "inputGranularity": enum ( |
字段 | |
---|---|
inputGranularity |
input 地址的粒度。这是解析输入地址的结果,不提供任何验证信号。如需了解验证信号,请参阅下文中的 例如,如果输入地址包含特定的公寓编号,则此处的 |
validationGranularity |
API 可完整验证地址的粒度级别。例如, 您可以在 |
geocodeGranularity |
有关 这有时可能与上述 |
addressComplete |
如果没有未解析的令牌,没有意外的或缺少的地址组成部分,地址会被视为完整。如需了解详情,请参阅 |
hasUnconfirmedComponents |
至少有一个地址组成部分无法分类或验证。如需了解详情,请参阅 |
hasInferredComponents |
至少推断出一个地址组成部分(添加),但输入中不包含该信息。如需了解详情,请参阅 |
hasReplacedComponents |
至少有一个地址组件已被替换,请参阅 |
细化程度
地址或地理编码可以使用的各种粒度。这些值用于表示某个地址的粒度,而地址则是指地址标识出邮件目的地的粒度。例如,“123 Main Street, Redwood City, CA, 94061”这样的地址用于标识 PREMISE
,而“Redwood City, CA, 94061”之类的地址用于标识 LOCALITY
。但是,如果我们在雷德伍德城找不到“123 Main Street”的地理编码,返回的地址可能已经是 LOCALITY
的粒度,即使地址已经更精细了。
枚举 | |
---|---|
GRANULARITY_UNSPECIFIED |
默认值。此值未使用。 |
SUB_PREMISE |
楼下楼层的成果,例如公寓。 |
PREMISE |
建筑物级结果。 |
PREMISE_PROXIMITY |
一个地理编码,该地址应非常接近该地址的建筑物级别。仅用于地理编码,不用于地址。 |
BLOCK |
地址或地理编码表示块。仅在具有块级地址的区域使用,如日本。 |
ROUTE |
地理编码或地址是经过精细化处理的路线,例如街道、道路或高速公路。 |
OTHER |
所有其他粒度,因为它们无法传递,因此它们会分桶。 |
Address
从输入中解析的地址的详细信息。
JSON 表示法 |
---|
{ "formattedAddress": string, "postalAddress": { object ( |
字段 | |
---|---|
formattedAddress |
更正后的地址,格式采用单行地址格式,遵循地址所在区域的地址格式设置规则。 |
postalAddress |
以邮政地址表示的经过验证的地址。 |
addressComponents[] |
无序列表。经过格式设置和更正的地址的各个地址部分,以及验证信息。这样可以提供有关各个组件的验证状态的信息。 地址组成部分没有按特定方式排序。请勿对列表中的地址组成部分的顺序做出任何假设。 |
missingComponentTypes[] |
应出现在格式正确的邮寄地址中,但其在输入内容中找不到且无法推断的组件类型。此类组件不在 |
unconfirmedComponentTypes[] |
|
unresolvedTokens[] |
输入内容中无法解析的任何令牌。输入内容可能未被识别为地址的有效部分(例如,在“123235253253 Main St, San Francisco, CA, 94105”等输入中,未解析的令牌可能类似于 |
地址组成部分
表示地址组成部分,例如街道、城市或州。
JSON 表示法 |
---|
{ "componentName": { object ( |
字段 | |
---|---|
componentName |
此组件的名称。 |
componentType |
地址组成部分的类型。请参阅表 2:地点服务返回的其他类型,查看可能的类型列表。 |
confirmationLevel |
表示我们确信组件正确无误的程度。 |
inferred |
表明该组成部分不属于输入内容,但我们会根据地址位置推断出该组成部分,因此我们认为应在完整地址中提供该组成部分。 |
spellCorrected |
表示组件名称的拼写经过了细微更正,例如通过切换显示顺序有误的两个字符。这表示外观更改。 |
replaced |
表示组成部分名称已替换为完全不同的名称,例如,错误的邮政编码替换为地址正确的邮政编码。这并非外观更改,输入组件已被更改为其他组件。 |
unexpected |
表示地址元素预计不会出现在给定区域的邮政地址中。我们之所以保留它,只是因为它属于输入内容的一部分。 |
组件名称
组件名称的封装容器。
JSON 表示法 |
---|
{ "text": string, "languageCode": string } |
字段 | |
---|---|
text |
名称文本。例如,“5th Avenue”表示街道名称,“1253”表示街道编号。 |
languageCode |
BCP-47 语言代码。如果组件名称未与语言(如门牌号)相关联,则不会显示此属性。 |
确认级别
确认级别的不同可能值。
枚举 | |
---|---|
CONFIRMATION_LEVEL_UNSPECIFIED |
默认值。此值未使用。 |
CONFIRMED |
我们验证此组件是否存在,在地址的其余部分可以正常使用。 |
UNCONFIRMED_BUT_PLAUSIBLE |
此组件无法确认,但可能确实存在。例如,街道上的电话号码是指已知有效门牌号范围内的街道号码。 |
UNCONFIRMED_AND_SUSPICIOUS |
此组件未经确认,很可能是错误的。例如,某地区不符合地址的其余部分。 |
地理编码
包含有关输入内容的地理编码地点的信息。
JSON 表示法 |
---|
{ "location": { object ( |
字段 | |
---|---|
location |
输入的经过地理编码的位置。 使用地点 ID 优于使用地址、纬度/经度坐标,以及 Plus 代码。在确定路线或计算行车路线路线时,使用坐标始终会导致对应点被贴近距离这些坐标最近的道路。这条路不能快速或安全地到达目的地,而且不能靠近相应酒店的接入点。此外,当某个地址经过反向地理编码后,无法保证返回的地址与原始地址一致。 |
plusCode |
对应于 |
bounds |
经过地理编码的地点的边界。 |
featureSizeMeters |
经过地理编码的地点的大小(以米为单位)。这是地理编码位置粗略的另一种衡量方式,但衡量的是物理大小而不是语义含义。 |
placeId |
此输入的地理编码目的地的 PlaceID。 如需详细了解地点 ID,请点击此处。 |
placeTypes[] |
输入的地理编码位置类型。例如, |
LatLng
表示纬度/经度对的对象。这以一对双精度数表示,分别代表纬度和经度。除非另有说明,否则此对象必须符合 WGS84 标准。值必须介于标准化范围内。
JSON 表示法 |
---|
{ "latitude": number, "longitude": number } |
字段 | |
---|---|
latitude |
纬度(以度为单位)。它必须在 [-90.0, +90.0] 范围内。 |
longitude |
经度(以度为单位)。它必须在 [-180.0, +180.0] 范围内。 |
PlusCode
Plus 代码 (http://plus.codes) 是采用两种格式的地理位置引用:定义 14mx14m(1/8000 度)或更小矩形的全局代码,以及复合代码,将前缀替换为参考位置。
JSON 表示法 |
---|
{ "globalCode": string, "compoundCode": string } |
字段 | |
---|---|
globalCode |
地点的全局(完整)代码,如“9FWM33GV+HQ”,表示 1/8000 x 1/8000 度面积(约 14 x 14 米)。 |
compoundCode |
地点的复合代码(如“33GV+HQ,Ramberg,挪威”),其中包含全局代码的后缀,并用引用实体的格式名称替换前缀。 |
视口
纬度/经度视口,以对角线对角的 low
和 high
点表示。视口被视为封闭区域,即包含边界。纬度范围必须介于 -90 度(含)和 -180 度(含)之间。各种情况包括:
如果
low
=high
,视口由该点组成。如果
low.longitude
>high.longitude
,则反转经度范围(视口与 180 度经度线相交)。如果
low.longitude
= -180 度,high.longitude
= 180 度,则该视口包括所有经度。如果
low.longitude
= 180 度,high.longitude
= -180 度,则经度范围为空。如果
low.latitude
>high.latitude
,则纬度范围为空。
必须填充 low
和 high
,且表示的框不能为空(如上述定义中所述)。视口为空会导致错误。
例如,以下视口完全包围了纽约市:
{ "low": { "纬度": 40.477398, "经度": -74.259087 }, "high": { "纬度": 40.91618, "经度": -73.70018 } }
JSON 表示法 |
---|
{ "low": { object ( |
字段 | |
---|---|
low |
必需。视口的低点。 |
high |
必需。视口的高点。 |
地址元数据
地址的元数据。对于发送到 Address Validation API 的每个地址,不能保证 metadata
完全填充。
JSON 表示法 |
---|
{ "business": boolean, "poBox": boolean, "residential": boolean } |
字段 | |
---|---|
business |
表示这是商家地址。如果未设置,则表示值未知。 |
poBox |
表示邮政信箱的地址。如果未设置,则表示值未知。 |
residential |
表明这是住宅的地址。如果未设置,则表示值未知。 |
uspsData
地址的 USPS 数据。对于发送到 Address Validation API 的每个美国或 PR 地址,不能保证 uspsData
会完全填充。如果您将响应中的 uspsData 用作主要部分,建议您将备用地址字段集成到响应中。
JSON 表示法 |
---|
{
"standardizedAddress": {
object ( |
字段 | |
---|---|
standardizedAddress |
USPS 标准化地址。 |
deliveryPointCode |
2 位数送货代码 |
deliveryPointCheckDigit |
递送点验证码。此数字会添加到用于自动扫描的邮件的 delivery_point_barcode 的末尾。将 delivery_point_barcode、deliveryPointCheckDigit、邮政编码和 ZIP+4 的所有数字相加应该得到一个可被 10 整除的数字。 |
dpvConfirmation |
DPV 确认的可能值。返回单个字符。
|
dpvFootnote |
交付点验证中的脚注。多个脚注可以放在同一字符串中。
|
dpvCmra |
指明地址是否为 CMRA(商业邮件接收代理机构)- 即接收客户邮件的私营企业。返回单个字符。
|
dpvVacant |
这个地方是空的吗?返回单个字符。
|
dpvNoStat |
这是非统计信息地址还是有效的地址?没有统计信息的地址是指持续被占用的地址或 USPS 不提供的地址。返回单个字符。
|
carrierRoute |
运营商路线代码。由 1 个字母前缀和 3 位数路线指示符组成的 4 个字符的代码。 前缀:
|
carrierRouteIndicator |
运营商路由速率排序指示器。 |
ewsNoMatch |
送货地址可以匹配,但 EWS 文件会指明即将提供完全匹配的结果。 |
postOfficeCity |
主要邮局所在城市。 |
postOfficeState |
主要邮局状态。 |
abbreviatedCity |
简写城市。 |
fipsCountyCode |
FIPS 国家/地区代码。 |
county |
郡/县名称。 |
elotNumber |
增强型旅游线路 (eLOT) 号码。 |
elotFlag |
eLOT 升序/降序标记 (A/D)。 |
lacsLinkReturnCode |
LACSLink 返回代码。 |
lacsLinkIndicator |
LACSLink 指示标志。 |
poBoxOnlyPostalCode |
仅邮政信箱邮政编码。 |
suitelinkFootnote |
从匹配街道或高层记录到套房信息的脚注。如果找到商家名称匹配,则返回辅助号码。
|
pmbDesignator |
PMB(私人邮箱)单元指示符。 |
pmbNumber |
PMB(私人邮箱)编号; |
addressRecordType |
与输入地址匹配的地址记录的类型。
|
defaultAddress |
表明找到默认地址,但存在更具体的地址的指示器。 |
errorMessage |
检索 USPS 数据时出现的错误消息。当 USPS 处理因检测到人为创建的地址而被暂停时,系统会填充此字段。 如果存在此错误,可能不会填充 USPS 数据字段。 |
cassProcessed |
指示请求的 CASS 已处理的指示符。 |
UspsAddress
USPS 的 USPS 表示法。
JSON 表示法 |
---|
{ "firstAddressLine": string, "firm": string, "secondAddressLine": string, "urbanization": string, "cityStateZipAddressLine": string, "city": string, "state": string, "zipCode": string, "zipCodeExtension": string } |
字段 | |
---|---|
firstAddressLine |
第一个地址行。 |
firm |
公司名称。 |
secondAddressLine |
第二行地址。 |
urbanization |
波多黎各城市名称。 |
cityStateZipAddressLine |
城市 + 省/自治区/直辖市 + 邮政编码。 |
city |
城市名称。 |
state |
由 2 个字母组成的状态代码。 |
zipCode |
邮政编码,例如 10009。 |
zipCodeExtension |
4 位数的邮政编码,例如 5023。 |