如何生成t.cn短网址

​什么是短网址?🧐

短网址的诞生原因?

说起短网址(短链接),很多人都已不再陌生。

不过想要把一串长长的网址,缩短成精简的链接,却没那么简单。

短网址最核心的就是如何让用户请求的是短链接而响应的确是长链接的内容?

长网址通过特殊的算法缩小到 一定长度,然后利用DB或者其他存储系统(这里是为了能够更快的响应)把长链接和短链接相互映射。

经过一段时间的摸索,已经搞定算法这个最艰难的步骤,分享出来给大家🤓

一、先简单封装一个过滤非法链接

1// 过滤非法网址 2 filter_url (url) { 3 var chinese_reg = /(http[s]?:\/\/[^ ]+)/ 4 5 if (url.trim().length === 0) { 6 console.log('请输入长网址!'); 7 return 8 } else if (!chinese_reg.test(url)) { 9 console.log('请输入正确的长网址'); 10 return 11 } 12 return url 13 }

二、在初始化方法中写入这个实例共用的数据

1// 初始化方法 2 constructor () { 3 // token 4 this.token = "Z1QljZOZiT4NTG" 5 6 // 请求地址 7 this.req_url = 'http://api.txapi.cn/v1/short_url/tcn' 8 9 // 需要缩短的长网址 10 this.request_url = '' 11 }

三、在封装一个run函数,让整个示例跑起来🤓

1// run函数 2 run (url) { 3 4 this.request_url = this.filter_url(url) 5 6 if(!this.request_url){ 7 return 8 } 9 10 this.shorten_url(this.req_url, this.token, this.request_url).then(res => { 11 console.log(res); // 查询结果 12 }) 13 }

最后附上完整代码😉

1const axios = require('axios') 2 3class Parse { 4 // 初始化方法 5 constructor () { 6 // token 7 this.token = "Z1QljZOZiT4NTG" 8 9 // 请求地址 10 this.req_url = 'http://api.txapi.cn/v1/short_url/tcn' 11 12 // 需要缩短的长网址 13 this.request_url = '' 14 } 15 16 // 缩短网址 17 shorten_url (url, token, data) { 18 let p = new Promise(function (resolve, reject) { 19 axios({ 20 url: url, 21 method: 'GET', 22 params: { 23 token: token, 24 url: data 25 } 26 }).then(resp => { 27 if(resp.data.code != 200 && resp.data.msg != "ok"){ 28 console.log("查询失败") 29 } else { 30 resolve(resp.data) 31 } 32 }) 33 }) 34 return p 35 } 36 37 // 过滤非法网址 38 filter_url (url) { 39 var chinese_reg = /(http[s]?:\/\/[^ ]+)/ 40 41 if (url.trim().length === 0) { 42 console.log('请输入长网址!'); 43 return 44 } else if (!chinese_reg.test(url)) { 45 console.log('请输入正确的长网址'); 46 return 47 } 48 return url 49 } 50 51 // run函数 52 run (url) { 53 54 this.request_url = this.filter_url(url) 55 56 if(!this.request_url){ 57 return 58 } 59 60 this.shorten_url(this.req_url, this.token, this.request_url).then(res => { 61 console.log(res); // 查询结果 62 }) 63 } 64} 65 66if(__filename === process.mainModule.filename) { 67 // new一个Parse对象 68 const p = new Parse() 69 70 // 调用run方法 71 p.run('https://www.baidu.com/') 72}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

15款最好用的腾讯短链接(url.cn接口)批量在线生成接口

  短链接已经广泛应用于各种场景,电商,微信,短信等等。那么今天给大家推荐15款t.cn、url.cn的短链接短网址在线生成工具,都是我从市面数十款短链接短网址生成工具里面挑选的最为简便,最为稳定的短链接短网址生成工具。废话不多!1,青梅短网址(https://www.oschina.net/action/GoToLink?urlhttp

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0