您的位置:首页 > Web前端 > Node.js

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

2015-05-26 13:19 387 查看

前言

目前,免费的 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  api ip地址库