詳解:從請求到響應字段的完整指南)
適用場景中文地址解析接口的核心能力是傳入一段包含姓名、手機號、地址、郵編的混合字符串返回拆分后的結(jié)構化字段。在電商訂單處理、快遞面單打印、CRM 客戶資料清洗、辦公地址入庫等場景中人工拆分地址耗時且容易出錯用接口做自動化預處理可以顯著提升效率。典型的輸入形態(tài)包括張三 13812345678 上海市浦東新區(qū)張江鎮(zhèn)科苑路88號 201203北京市海淀區(qū)中關村大街1號 李四 13900001111新疆烏魯木齊市天山區(qū)解放路100號接口采用純本地正則算法無上游依賴響應在毫秒級。需要說明的是這里的“無上游依賴”指的是服務端解析過程中不依賴第三方地址庫具體響應延遲請以實際環(huán)境為準。接口能力邊界在接入前需要明確這個接口能做什么、不能做什么支持 34 個省級行政區(qū)及其簡稱識別例如“北京”歸一化為“北京市”“新疆”歸一化為“新疆維吾爾自治區(qū)”。支持姓名、手機、郵編的混合輸入提取但手機號和郵編會做脫敏處理例如響應中的phone為138****1234。地址長度限制為 500 字符超出后建議截斷或做前置校驗。返回字段固定省份、城市、區(qū)縣、街道、詳細地址、姓名、手機號、郵編、原始文本。QPS 限制為 20/s未登錄匿名調(diào)用會受到更嚴格的限流具體閾值以文檔為準。如果業(yè)務中需要處理非常規(guī)地址如“xx路xx號xx棟xx室”和“xx村xx組”混合建議先用樣本數(shù)據(jù)做充分測試確認解析結(jié)果符合預期。請求參數(shù)與鑒權請求方法與地址請求方法POST請求地址https://v1.apizero.cn/api/address-parse請求頭Content-Type: application/jsonHeader 參數(shù)參數(shù)名是否必須類型說明Authorization否stringBearer sk_live_xxx可選未登錄匿名調(diào)用受更嚴格限流X-API-Key視文檔而定string部分調(diào)用方式使用該頭部傳遞密鑰請以文檔頁說明為準素材中的 curl 示例使用了X-API-Key作為鑒權頭同時接口文檔也支持Authorization: Bearer sk_live_xxx的方式。建議在代碼中固定一種鑒權方式將密鑰放到環(huán)境變量中避免硬編碼。請求體字段請求體是一個 JSON 對象只有一個必填字段address。字段類型是否必須說明addressstring是中文地址字符串支持姓名/手機/郵編混合輸入長度 ≤ 500請求體示例{ address: 張三 13812345678 上海市浦東新區(qū)張江鎮(zhèn)科苑路88號 201203 }如果傳入空字符串或非 string 類型接口會返回錯誤。建議客戶端在發(fā)起請求前先做類型和長度檢查避免無效請求消耗 QPS。使用 curl 接入以下是一個可直接運行的 curl 示例請將$APIZERO_API_KEY替換為你的密鑰curl -sS \ -X POST \ -H X-API-Key: $APIZERO_API_KEY \ -H Content-Type: application/json \ -d {address: 張三 13812345678 上海市浦東新區(qū)張江鎮(zhèn)科苑路88號 201203} \ https://v1.apizero.cn/api/address-parse如果你使用Authorization頭可以這樣寫curl -sS \ -X POST \ -H Authorization: Bearer sk_live_xxx \ -H Content-Type: application/json \ -d {address: 新疆烏魯木齊市天山區(qū)解放路100號} \ https://v1.apizero.cn/api/address-parse注意上面示例中的sk_live_xxx是占位符你需要替換成自己賬號下的真實密鑰。生產(chǎn)環(huán)境推薦使用環(huán)境變量export APIZERO_API_KEYsk_live_your_key然后通過$APIZERO_API_KEY引用。響應字段解讀成功響應的Content-Type為application/json外層結(jié)構固定為code、msg、data、request_id。{ code: 0, data: { city: 上海市, detail: 科苑路88號, district: 浦東新區(qū), name: 張三, original: 張三 138****1234 上海市浦東新區(qū)張江鎮(zhèn)科苑路88號 201203, phone: 138****1234, province: 上海市, street: 張江鎮(zhèn), zipcode: 201203 }, msg: 成功, request_id: kx8n9q2a1b3c4d5e6f7g }data 字段明細字段類型說明provincestring省份已做歸一化如“上海市”citystring城市如“上海市”districtstring區(qū)縣如“浦東新區(qū)”streetstring街道/鄉(xiāng)鎮(zhèn)如“張江鎮(zhèn)”detailstring剩余詳細地址如“科苑路88號”namestring識別出的姓名phonestring脫敏后的手機號zipcodestring郵編originalstring原始字符串手機號已脫敏注意original字段中的手機號被中間四位替換為****這是接口的脫敏處理。如果你需要原始手機號接口不返回請勿將明文手機號寫入日志。street字段在輸入沒有明確鄉(xiāng)鎮(zhèn)/街道時會返回空字符串或缺失需要根據(jù)實際響應處理。常見錯誤排查這里列出幾類常見問題實際錯誤碼與錯誤信息請以接口返回為準。1. 鑒權失敗現(xiàn)象返回code非 0或 HTTP 狀態(tài)碼為 401/403。排查檢查X-API-Key或Authorization是否正確密鑰是否過期是否在請求頭中正確攜帶。2. 請求體格式錯誤現(xiàn)象接口無法解析 JSON返回格式錯誤。排查確保Content-Type為application/json請求體是合法的 JSON 對象字段名address必須存在字符串用雙引號。3. 地址長度超限現(xiàn)象address長度超過 500 字符。排查在客戶端預處理超過 500 字符的地址可以先截斷或拆分也可以在業(yè)務層設置更保守的長度上限比如 200 字符。4. 解析不到姓名或手機號現(xiàn)象返回的name或phone為空。排查確認輸入的字符串中確實包含姓名和手機號手機號必須是 11 位數(shù)字如果隱私要求可以用x或*占位但接口可能無法提取。5. QPS 限流現(xiàn)象短時間內(nèi)大量請求被拒絕。排查控制調(diào)用頻率不要超過 20/s如果需要更高并發(fā)考慮使用Authorization鑒權方式若有更高權益以文檔為準。工程化注意事項超時與重試接口是網(wǎng)絡請求必須設置合理的超時時間。建議連接超時3 秒讀取超時5 秒重試策略對超時和 5xx 錯誤做重試最多重試 2 次并使用指數(shù)退避如 200ms、400ms。日志脫敏original字段包含脫敏后的手機號但address請求參數(shù)中的手機號是明文。建議請求日志不打印完整address只打印長度或截斷后的前 20 個字符。響應日志中直接使用接口返回的original字段不要拼接請求參數(shù)。數(shù)據(jù)校驗與兜底接口返回的province、city等字段不一定完全符合你們系統(tǒng)的字典。建議在入庫前做一次映射校驗例如# 示例將接口返回的省份名映射到業(yè)務字典 province_map { 上海市: 上海, 新疆維吾爾自治區(qū): 新疆, } standard_province province_map.get(data.get(province), data.get(province))如果detail為空可以用streetdetail的邏輯拼接完整地址但要避免重復拼接。批量處理限制接口一次只能解析一個地址沒有批量接口。若需要批量清洗建議在本地做并發(fā)控制用線程池或異步隊列限制并發(fā)數(shù)避免觸發(fā)限流。測測試例設計建議準備以下測試樣本標準帶姓名手機號郵編的地址。只有地址沒有手機號。省級簡稱輸入如“北京”“新疆”。地址中夾雜英文或特殊符號。地址長度接近 500 字符。用這些樣本跑一遍確認解析結(jié)果是否符合預期。如果個別地址解析錯誤可以考慮在前置流程中用正則先清洗一次再調(diào)用接口。參考文檔接口文檔頁https://apizero.cn/aidocs/address-parse原始 Markdown 文檔https://apizero.cn/aidocs/address-parse/raw.md