IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]nodejs 搭建一个私有的获取ip归属地的api

    qcpm1983发表于 2015-05-26 13:19:22
    love 0

    前言

    目前,免费的 ip 地址库不多,收费的感觉用起来不爽。淘宝有个 api 接口,但是有访问量限制。于是想到用 node 做一个自己的 api 接口。先从自己的数据库查,如果查不到的话,就到淘宝的接口查,查到后插入到自己的数据库。

    http://ip.youjiaxc.com/api0/ip?ip=202.101.172.35
    只需要将地址202.101.172.35换成你需要查询的地址即可,返回格式如下:

    {
        "country": "中国",
        "country_id": "CN",
        "area": "华东",
        "area_id": "300000",
        "region": "浙江省",
        "region_id": "330000",
        "city": "杭州市",
        "city_id": "330100",
        "county": "",
        "county_id": "-1",
        "isp": "电信",
        "isp_id": "100017",
        "ip": "202.101.172.35"
    }

    需要的模块

    • express
    • requset
    • mongoose

    代码

    function get_local_by_ip(req, res) {
    
    
        ip_local.findOne({ip: req.query.ip}, function (err, ipfind) {
                /**
                 * 先从自己的数据库查询
                 */
                if (err) throw err;
                if (ipfind) {
                    res.json(ipfind)
                } else {
                    /**
                     * 若找不到则从淘宝的api拿,拿到后存到数据库,返回得到的结果。
                     */
                    request.post({
                            url: 'http://ip.taobao.com/service/getIpInfo.php',
                            form: {ip: req.query.ip}
                        },
                        function (error, response, body) {
                            var info = JSON.parse(body);
                            if (!error && response.statusCode == 200) {
                                if (info.code === 0) {
                                    res.json(info.data)
                                }
                                var new_ip = new ip_local(info.data);
                                new_ip.save()
    
                            }
                        }
                    )
    
                }
    
            }
        )
    }
    

    截图如下:
    这里写图片描述

    代码地址

    github



沪ICP备19023445号-2号
友情链接