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

前言

目前,免费的 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

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值