Skip to content

GetClientField 🎯📡

查询客户端出口 IP 的单个字段。

🚀 最轻量的自我探测

想知道"我的公网 IP"或"我的时区",GetClientField 是最省的路径:不传 IP、只取一个字段、返回纯文本字符串。典型用法:client.GetClientField(ctx, "ip")

签名

go
func (c *Client) GetClientField(ctx context.Context, field string) (string, error)

端点

GET https://ipapi.co/{field}/

参数

参数类型说明
ctxcontext.Context超时/取消
fieldstring字段名

返回

  • string:字段值
  • error

内部流程

🎨 一图抵千言

GetClientFieldGetField 几乎同构,唯一区别是 URL 不含 IP 段(/{field}/ vs /{ip}/{field}/)。两者都不校验 IP,只校验 field 白名单。

这张图展示"调用方视角"的端到端往返:从无 IP 输入,到 HTTP 请求/重试/单值返回的时序关系。

这张图展示"选型决策树"视角:什么时候该用 GetClientField 而不是兄弟方法。

⚠️ 单字段≠更快的网络

GetClientField 省的是"序列化与解析"的开销,不是网络往返——它仍是一次完整 HTTP 请求。若要多个字段,GetClientIPInfo 一次往返拿全量通常更划算。

示例

go
// 只想知道自己公网 IP
myIP, _ := client.GetClientField(ctx, "ip")
fmt.Println("我的 IP:", myIP)

// 自己的时区
tz, _ := client.GetClientField(ctx, "timezone")

错误

错误条件
ErrInvalidFieldfield 非法(客户端校验)

与 GetField 的区别

维度GetFieldGetClientField
端点/{ip}/{field}//{field}/
目标指定 IP客户端出口 IP
IP 校验❌ 不校验(同 GetClientField❌ 不校验
field 校验validFields 白名单validFields 白名单
典型场景查任意 IP 的某字段查"我自己"的某字段
🧭 四种查询方法选型矩阵
需求推荐方法
查任意 IP 全量GetIPInfo
查任意 IP 原始字节GetIPInfoRaw
查任意 IP 单字段GetField
查我自己全量GetClientIPInfo
查我自己原始字节GetClientIPInfoRaw
查我自己单字段GetClientField

下一步

基于 MIT 许可证发布