短链接是指仅包含一个网址的链接形式,通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。和长链接不同,长链接往往包含多个网址。短链接具有诸多优势,它不仅能够便捷地实现快速导航,还能有效避免过多重复的网址链接,进而提升网站页面的可访问性。
这样做好处在于:
短链接的应用场景非常广泛,尤其是在网络营销中。以下是一些常见的应用场景:
需要注意的是,在使用短链接时,需要遵守相关法律法规和隐私政策,确保用户隐私和安全。同时,需要合理控制发送频率和数量,避免过度打扰用户造成反感。
Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
npm install express
const express = require('express')
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
ShortID插件是一款非常实用的工具,主要用于在应用程序中生成短格式的唯一标识符。
使用
npm install shortid
CommonJS:
const shortid = require('shortid');
ES模块
import shortid from 'shortid'
生成唯一的ShortID,默认情况下,生成的ShortID长度为7个字符
const short_id = shortid.generate()
将生成长度为10的ShortID
const short_id = shortid.generate(10)
自定义生成标识符的字符集
const short_id = shortid.characters('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
epxress 启动服务提供接口
shortid 生成唯一短码
npm install express
npm install shortid
这里只是为了演示,没有使用数据库存储。实际项目中你可以存放到数据库中。
//serve.js
import express from 'express'
import shortid from 'shortid'
const app = express()
app.use(express.json())
// 存储短码和url的映射关系
const shortLinks = {
'fd8xIoDC': {
url: 'https://blog.csdn.net/shanghai597/article/details/138959931?spm=1001.2014.3001.5501',
},
'DDkq0YYh': {
url: 'https://blog.csdn.net/shanghai597/article/details/138790221?spm=1001.2014.3001.5501',
},
'RwE11i_Ec': {
url: 'https://blog.csdn.net/shanghai597/article/details/138911534?spm=1001.2014.3001.5501',
},
'DBWDvt2rkM': {
url: 'https://blog.csdn.net/shanghai597/article/details/131593381?spm=1001.2014.3001.5502',
}
}
//生成短码 存入数据库
app.post('/createUrl', async (req, res) => {
const { url } = req.body
const short_id = shortid.generate()
shortLinks[short_id] = { url }
res.send(`http://localhost:3000/${short_id}`)
})
//重定向
app.get('/:shortUrl', async (req, res) => {
const short_id = req.params.shortUrl
const result = shortLinks[short_id].url
if (result) {
res.redirect(result)
} else {
res.send('Url not found')
}
})
app.listen(3000, () => {
console.log('Server is running on port 3000')
})