在达到限制之前监控密钥用量
随时关注配额响应头,就能在请求真正被拒绝之前,提前知道何时即将达到限制。
在一长串时区名称中滚动寻找自己的时区,是个小麻烦,而一个合理的默认值几乎能为所有人免去这个麻烦。
/v1/ip 端点直接返回 timezone 字段,因此一次调用就能同时获得位置和时区标识符,无需另外调用时区端点。
GET /v1/ip?ip=203.0.113.88{
"status": "ok",
"ip": "203.0.113.88",
"version": 4,
"found": true,
"country": "Australia",
"country_code": "AU",
"region": "New South Wales",
"city": "Sydney",
"postcode": "2000",
"lat": -33.8688,
"lon": 151.2093,
"timezone": "Australia/Sydney",
"asn": 7890,
"org": "Example Networks"
}在设置表单首次渲染时,在服务器端把此响应中的 timezone 值设为选中项,然后再将页面发送给访客。无论选择器是标准时区标识符的下拉列表还是可搜索的列表,做法都一样,因为您预先选中的值只是一个标准标识符字符串,就像示例中的那样。
为多名旅客收集信息的旅行或活动预订表单,可以只为填写表单的人检测一次时区,然后把它作为每位旅客条目的共同默认值,而不是为每位旅客再查询一次。每位旅客的字段仍可单独编辑,因为团体预订中常常有人从与填表人不同的时区加入。
时区选择器之所以存在,正是因为基于 IP 的检测并不总是准确,尤其是对使用 VPN 或正在旅行的访客而言。请始终让该字段保持可编辑,并优先保存访客明确选择的值而不是检测到的默认值,不要在之后的访问中重新检测并覆盖他们的选择。
不要因为您的示例查询恰好只显示了一个清晰的标识符,就假设一个大国只对应一个时区。跨越多个时区的国家会返回与访客实际位置相符的具体时区,这正是基于 IP 的检测比国家级猜测更有用的地方,但前提是您的表单信任返回的具体标识符,而不是用一个默认时区代替整个国家。
只在访客首次设置账户或偏好时运行一次检测,并保存结果。每次登录都重新运行只会浪费请求而没有任何价值,因为访客一旦有意设定了时区,除非自己更改,否则就应保持不变。
如果您手头已经有具体坐标而不是 IP 地址,例如访客输入的配送地址,/v1/timezone 可以直接根据纬度和经度解析时区,还可以接受一个具体的时间戳,当您需要知道某个特定时刻而非当前所适用的时区时,这非常有用。
每个新账户或偏好设置只查询一次,就是一次请求。即使某项服务每天持续有新用户注册,仅就此功能而言,也能完全落在每个密钥附带的、或单个地址在没有密钥时可用的每天 2,500 次免费请求之内。