Skip to content

🌐 IPv4 查询

查询 IPv4 地址的地理位置,最常见用法。

什么是 IPv4

IPv4 是 32 位地址,形如 8.8.8.8,是互联网最普及的地址格式。本库完全支持。

基本查询

go
info, err := client.GetIPInfo(ctx, "8.8.8.8", "json")
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%s 位于 %s, %s\n", info.IP, info.City, info.CountryName)

🎨 一图抵千言

下方流程图展示了 GetIPInfo 从输入到结果的完整调用链路,含校验、鉴权、请求与错误处理。

校验

ValidateIPnet.ParseIP 判断合法性:

go
if err := ipapi.ValidateIP("8.8.8.8"); err != nil {
	// 合法
}
if err := ipapi.ValidateIP("999.999.999.999"); err != nil {
	// err == ErrInvalidIP
}

GetIPInfo 内部已调用,非法 IP 直接返回 ErrInvalidIP,不发请求。

单字段

go
city, _ := client.GetField(ctx, "8.8.8.8", "city")
asn, _ := client.GetField(ctx, "8.8.8.8", "asn")

常见 IPv4 示例

IP说明
8.8.8.8Google Public DNS
1.1.1.1Cloudflare DNS
208.67.222.222OpenDNS

错误场景

  • 🚫 999.999.999.999ErrInvalidIP
  • 🚫 10.0.0.1 / 192.168.x.xErrReservedIP(保留/私有地址)
  • 🚫 0.0.0.0ErrReservedIP

私有地址无地理意义,详见 保留 IP

下面的时序图从客户端与 ipapi.co 服务端交互的视角,对比了合法 IPv4、非法 IPv4、保留 IP 三种典型场景下各自的调用时序与返回点:

🎨 一图抵千言

下一步

基于 MIT 许可证发布