人生就是不斷學習,調整與更新持續前進。

US zipcode api 開發

 

免費(基本)/ 付費(高頻與商業用)

功能:距離計算、郵遞區號資料查詢、城市對應 ZIP、半徑搜尋

https://www.zipcodeapi.com/

使用方式:申請帳號

建立一個 api key 

程式:Ruby

 


def lookup(zip_code)
    validate_zip_code!(zip_code)

    response = make_request("/#{API_KEY}/info.json/#{zip_code}/degrees")
    parse_lookup_response(response)

  rescue InvalidZipCodeError => e
    Rails.logger.warn "Invalid ZIP code: #{zip_code} - #{e.message}"
    nil
  rescue ApiError => e
    Rails.logger.error "ZipCodeAPI lookup failed: #{e.message}"
    nil
  rescue => e
    Rails.logger.error "Unexpected error in lookup: #{e.message}"
    nil
  end


def complete_address(addr1:, zip_code:, addr2: nil)
    validate_address_input!(addr1, zip_code)

    zip_data = lookup(zip_code)

    unless zip_data
      Rails.logger.warn "Cannot complete address: ZIP code lookup failed for #{zip_code}"
      return nil
    end

    complete_data = {
      addr1: addr1.to_s.strip,
      addr2: addr2.to_s.strip.presence,
      zip_code: zip_code,
      city: zip_data[:city],
      state: zip_data[:state_abbreviation],
      full_state: get_state_full_name(zip_data[:state_abbreviation]),
      country: 'US',
      latitude: zip_data[:latitude],
      longitude: zip_data[:longitude],
      timezone: zip_data[:timezone]
    }

    Rails.logger.info "Address completed successfully for ZIP: #{zip_code}"
    complete_data

  rescue => e
    Rails.logger.error "Error completing address: #{e.message}"
    nil
  end