在项目过程中,我们常常需要获取IP的所在地。而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的。在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的使用。
1.购买服务
https://market.aliyun.com/products/57002003/cmapi010805.html"text-align: center">
点击购买后,会让你登录。阿里云可以用淘宝账户登录,想来应该大家都有。并且这个API不要钱100万次查询,应该足够支撑所有的非商业用途了。
购买后在控制台的云市场中你可以找到这个订单,点击右侧的接口进入AIP使用教程界面
这里进去之后是刚才的购买页面,向下滑动就可以看到该API的使用方法
这里有各种语言的官方示例,当然意料之中的没有Node版,所以下方我将介绍Node的使用方法
2.搭建服务器
由于本文主题是使用该接口,所以如果搭建服务器有描述不清的地方请大家谅解。
这里我使用express搭建的服务器
先创建一个test文件夹
文件夹里有两个文件
第一个是test.js(服务器配置文件)
第二个是package.json(用于引入express模块)
//这里是测试文件test.js const http = require('http'), express = require('express'), app = express(); app.use('/',function (req,res) {//访问localhost所有的请求都会进入这里 res.send('服务器启动'); }); http.createServer(app).listen(80,'0.0.0.0');//创建服务器实例 { "name": "test", "version": "1.0.0", "dependencies": { "express": "latest" } } //package.json
先在package.json中右键 npm install(cnpm也行)
我的编译器是webstorm(不一样的同学请按自己的来操作)
安装完成后就可以运行test.js了
服务器启动后我们打开浏览器测试一下
到这里服务器的搭建就完成了
下面进入Api的使用
3.Api接口的调用
在之前的官方页面中有个调试工具点进去你会看见
根据这个我们进行相关的配置
首先我们要引入https因为这个请求虽然是get但是要使用https(之前被这个卡了好久一直没有找到原因)
let option = { hostname:"dm-81.data.aliyun.com",//上图的接口域名 path:`/rest/160601/ip/getIpInfo.json"Content-Type":"application/json; charset=utf-8", "Authorization": "APPCODE 这里是你阿里云中那个appcode", } };
appcode
配置参数完成后就可以开始写https请求了
https.request使用方法与http.request 一致详情请见官网文档(http://nodejs.cn/api/http.html#http_http_request_options_callback) let re = https.request(option,(Res)=>{//为了与外层的res区别故此处响应文件用Res Res.setEncoding('utf8'); if(Res.statusCode===200){//若http状态码为200则请求成功 Res.on('data', (data) => { res.send(data);//将接口返回的数据返回到页面上 }); } }); re.on('error', (e) => { console.error(`请求遇到问题: ${e.message}`); }); re.end();
下面粘出完整代码(需要的同学拿走请注明出处 把appcode换成你自己的即可 创作不易望大家点点订阅 手动滑稽)
//这里是测试文件 const http = require('http'), https = require('https'), express = require('express'), app = express(); app.use('/',function (req,res) {//访问localhost所有的请求都会进入这里 let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; let option = { hostname:"dm-81.data.aliyun.com",//上图的接口域名 path:`/rest/160601/ip/getIpInfo.json"Content-Type":"application/json; charset=utf-8", "Authorization": "APPCODE 你的appcode", } }; let re = https.request(option,(Res)=>{//为了与外层的res区别故此处响应文件用Res Res.setEncoding('utf8'); if(Res.statusCode===200){//若http状态码为200则请求成功 Res.on('data', (data) => { res.send(data);//将接口返回的数据返回到页面上 }); } }); re.on('error', (e) => { console.error(`请求遇到问题: ${e.message}`); }); re.end(); }); http.createServer(app).listen(80,'0.0.0.0');//创建服务器实例
然后我们再次访问 服务器那个页面返回结果如下(这里我是本地测试所以返回值为内网IP)
到这里就可以查到访问用户的IP所在地了
总结
以上所述是小编给大家介绍的node.js使用免费的阿里云ip查询获取ip所在地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 罗大佑-无法盗版的青春套装版10CD【WAV】
- 张学友《意乱情迷》蜚声环球 2024 [WAV+CUE][1G]
- 柏菲《好歌30年特别版2CD》最好听的影视歌曲[低速原抓WAV+CUE][1G]
- 张学友《世纪10星·永恒篇》香港版[WAV+CUE][1G]
- 模拟之声慢刻CD《刘德海.琵琶独奏精逊【低速原抓WAV+CUE】
- Jamettone-18052023—improv(EDit)(2024)【FLAC】
- 【索尼精芽20首最棒的苏格兰歌曲集【FLAC】
- 池约翰C.J《少年白马醉春风2 动画原声带》[320K/MP3][26.67MB]
- 池约翰C.J《少年白马醉春风2 动画原声带》[FLAC/分轨][144.13MB]
- 陈致逸《幻想乐园 Fantasyland》[320K/MP3][120.54MB]
- 席卷全球最红舞曲《火辣辣DJ[英文版]》[DTS-WAV]
- 群星-席卷全球最红舞曲《火辣辣DJ中文版》【WAV】
- 模拟之声慢刻CD《声入人心[年度发烧人声严选]》[低速原抓WAV+CUE]
- 陈致逸《幻想乐园 Fantasyland》[FLAC/分轨][554.27MB]
- Rhymist / LusciousBB《年轮》[320K/MP3][76.52MB]