Node.js调用ip接口获取地理信息 |
您所在的位置:网站首页 › 当前ip地址位置 › Node.js调用ip接口获取地理信息 |
最近项目中需要获取访问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 |