原文链接:Nodejs 第六十二章(短链接) - 掘金 (juejin.cn)
短链接是一种缩短长网址的方法,将原始的长网址转换为更短的形式。短链接的主要用途之一是在社交媒体平台进行链接分享。由于这些平台对字符数量有限制,长网址可能会占用大量的空间,因此使用短链接可以节省字符数。原理就是使用重定向到原网站。
CREATE TABLE `short` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `short_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '短码', `url` varchar(255) NOT NULL COMMENT '网址',PRIMARY KEY (`id`)
)
import knex from 'knex'
import express from 'express'
import shortid from 'shortid'
const app = express()
app.use(express.json())
const db = knex({client: 'mysql2',connection: {host: 'localhost',user: 'root',password: '123456',database: 'short_link'}
})
//生成短码 存入数据库
app.post('/create_url', async (req, res) => {const { url } = req.bodyconst short_id = shortid.generate()const result = await db('short').insert({ short_id, url })res.send(`http://localhost:3000/${short_id}`)
})
//重定向
app.get('/:shortUrl', async (req, res) => {const short_id = req.params.shortUrlconst result = await db('short').select('url').where('short_id', short_id)if (result && result[0]) {res.redirect(result[0].url)} else {res.send('Url not found')}
})app.listen(3000, () => {console.log('Server is running on port 3000')
})