本文详解如何利用 Next.js 构建短链接服务。核心原理是将长网址存入数据库,通过自增 ID 转换为短字符串作为 Key。重点解析使用 10 进制转 62 进制生成唯一短码的方法,以及 Next.js 中通过动态路由 [[wp:a3]] 捕获参数并实现跳转的具体代码实现。
短链接服务的基本原理
短链接服务的基本原理
短链接并非通过压缩算法生成,而是将原始网址存储于数据库中,以简短字符串作为键值(Key)。当用户访问该短链接时,系统根据此键从数据库检索原始 URL 并重定向跳转。
鉴于上述机制,短链接服务最适合采用键值对(Key/Value)类型的数据库进行存储与管理。
生成短链接唯一参数的核心方法是将十进制数字转换为 62 进制字符串。
function string10to62(number) {
var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'.split(''),
radix = chars.length,
qutient = +number,
arr = [];
do {
let mod = qutient % radix;
qutient = (qutient - mod) / radix;
arr.unshift(chars[mod]);
} while (qutient);
return arr.join('');
}
具体实现时,系统维护一个自增的十进制计数器。每次生成新短链接时,将当前自增后的十进制数值转换为对应的 62 进制字符串,从而确保每个短码的唯一性。
选择十进制转 62 进制的原因在于其生成的字符串长度极短,有利于存储和传输。
例如,十进制的 100000000 转换为 62 进制后仅为 6LAze,这种高压缩比使得短链接更加简洁高效。
Next.js 动态路由参数获取
在 Next.js 中获取动态路由参数的方法
在 Next.js 项目中,需创建文件 pages/[slug].js 来处理动态路由。
文件名使用方括号包裹变量名,表示该路径段为动态参数。通过访问 http://ip/xxx 形式的 URL,即可获取到参数 xxx。
关键代码实现如下:
import { useRouter } from 'next/router';
const router = useRouter();
const { slug } = router.query;
获取到 slug 参数后,需在数据库中查找对应的原始 URL 并执行跳转操作。具体逻辑如下:
db.findOne({ slug: slug }, function (err, doc) {
if(doc!=null){
window.location.href=doc.url;
}
});
项目源码与演示地址
项目源码及在线演示地址如下:

1、GitHub 源代码地址:https://github.com/codetyphon ...
2、在线演示地址:https://nextshort.vercel.app
总结
本文介绍了基于 Next.js 开发短链接服务的技术细节。如需了解更多 Next.js 开发相关内容,请查阅本站过往文章或继续浏览后续教程,感谢支持。