Node.js调用ip接口获取地理信息

您所在的位置:网站首页 当前ip地址位置 Node.js调用ip接口获取地理信息

Node.js调用ip接口获取地理信息

#Node.js调用ip接口获取地理信息| 来源: 网络整理| 查看: 265

最近项目中需要获取访问ip的地理信息。

在网上找了一下,找到了一个阿里云的接口,免费的,登录阿里云购买就行了。

购买之后,在阿里云控制台里就可以看到该项服务的AppKey、AppCode等信息

回到购买页面,看看api使用方法,果然不出所料没有Node.js版本。

没关系,可以点击调试去看看,其实就是用Node发起一个get请求而已,只需配置一下请求头,就像写爬虫一样。

下面看代码,这里我用了Promise,注意这里接口是https协议的

/** * @param {string} ip ip地址 * @method 根据ip地址获取地理信息 */ function getAddress(ip){ let options = { hostname: 'dm-81.data.aliyun.com', //接口域 path: `/rest/160601/ip/getIpInfo.json?ip=${ip}`, //请求地址 headers: { //请求头 "Content-Type": "application/json; charset=utf-8", "Authorization": "APPCODE 你的AppCode" } } return new Promise((resolve, reject) => { // 发起请求 let req = https.request(options, res => { let chunks = []; res.on('data', chunk => { chunks.push(chunk); }) res.on('end', () => { let buffer = Buffer.concat(chunks).toString(); // 如果接口返回空值 let data = buffer ? JSON.parse(buffer) : {code: 1, data: 'ip接口没有返回值'}; resolve(data); }) }) // 请求出错 req.on('error', err => { console.log('请求接口出错') resolve({code: 1, data: "请求ip接口出错"}); }) // 请求结束 req.end(); }) }

接口返回数据如下

ip地址不正确时返回的数据如下

{"code":1,"data":"非法的IP地址!"}

有时候接口不稳定会出现返回空值,上面代码已经做了相关处理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3