详解根据IP查询所在国家地区的后台实现方案

文章目录

    • 摘要
    • 实现过程
      • 思路
      • GeoLite2 IP库文件引入
        • 准备工作
        • 代码实现
      • Ipdata API
        • 准备工作
          • 官网账号注册
          • 创建API Key
          • API文档:
        • 代码实现
    • 完整代码
    • 总结

摘要

  本文详解如何封装一个根据IP获取所在国家地区的接口。不管是网站、APP还是PC软件,如果你的目标客户包含国内和海外,那必然有多语言等需要区分用户所在区域的功能,虽然说IP定位会有开VPN的特殊场景影响导致不准确(国内被定位到海外,一般来说产品可接受),并且APP本身有其他判断用户所在地的方式,比如安卓可以通过GPS,但是对于一个完整的方案来说,在客户端其他更准确的方式失效或者由于用户不给APP权限导致无法使用时,有一个IP查询的接口对接也是一个必要的兜底方式。

实现过程

思路

  世界范围内IP的数据是不停在更新的,为确保尽可能多的IP能通过接口查询到对应的所在区域,我们需要更新尽量频繁的数据源,ipdata是个不错的选择,它提供API,传入IP即可返回IP相关的国家、城市、时区等信息,但是Ipdata免费调用次数只有一天1500次,需要更多调用次数得花钱。所以我们搭配一个固定的ip数据文件GeoLite2-City.mmdb查询,优先从项目集成的数据文件查询,查询不到才去调用ipdata,并且还可以做个ipdata调用结果的缓存设计,毕竟一个ip属于什么国家是不会频繁变化的,你哪怕缓存几天,都能大大降低ipdata调用次数的

你可能感兴趣的:(开发场景案例分析,tcp/ip,java,spring)