
内容声明
本文仅用于技术分享和学习交流,内容不包含任何广告、推广、引流、付费课程或外链信息。所有示例和配置均为技术实践,欢迎参考和自定义。
本文介绍了短链接的生成与访问流程。通过将长链接转换为 MD5 HASH 值,检查数据库是否存在对应记录,若无则存入数据库并返回自增 ID。ID 转换为 26 进制字符串作为短链接的 Key。访问短链接时,服务器解析 Key,重定向至长链接。提供了 Node.js 代码示例,展示了 SQL 结构及 10 进制到 26 进制的转换方法。
日常生活中经常通过网站链接来传播信息,但是在各种社交媒体或通讯软件中对单个信息的长度是有限制的,所以将一个长链接转换成短链接是个刚需功能。

https://www.example.com/t/kbkbkb。kbkbkb,在库中找到相应的长链接地址 https://xxx。https://xxx。https://www.example.com/t/ab。SQL结构 (ORM) - Sequelize:
const TinyUrl = sqlIns.define('TinyUrl', {
tiny_id: { // 自增 ID
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
ori_link: { // 长链接
type: DataTypes.STRING(350),
},
ori_md5: { // 长链接 MD5 HASH
type: DataTypes.STRING(40),
},
tiny_link: { // 短链接 https://www.example.com/t/abcdef
type: DataTypes.STRING(30),
},
tiny_key: { // Key abcdef
type: DataTypes.STRING(20),
},
}, {
tableName: 'tiny_url',
createdAt: 'create_at',
updatedAt: false
})10 进制转换 26 进制:
function convert26(num) {
return (num <= 26 ?
String.fromCharCode(num + 64) :
convert26(~~((num - 1) / 26)) + convert26(num % 26 || 26)).toLowerCase();
}
convert26(1) // "a"
convert26(28) // "ab"
更新记录
本文首次编辑于 2021-01-10,最近更新于 2025-12-26。
版权声明
本文为原创文章,作者保留版权。转载请保留本文完整内容,并以超链接形式注明作者及原文出处。
作者: 除除
原文: http://blog.mazey.net/1798.html
(完)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。