SpringBoot + Sa-Token + React 短链项目SpringBoot + Sa-Token + React 短链项目
SpringBoot + Sa-Token + React 短链项目
SpringBoot + Sa-Token + React 短链项目
基于 React + Spring Boot 的简单高效的 URL 缩短系统,可以使 URL 更加简短易于分享,并轻松管理你的链接。

前端在线体验🔊:http://124.70.210.130/

GitHub仓库 🔽

前端地址🌈:GitHub - lhccong/short-link-dog-frontend: ShortLin...

后端地址🚀:GitHub - lhccong/short-link-dog-backend: ShortLink...

项目背景

相信大家都是乐于分享、开源的程序员,相信大家会碰到以下场景:

1)有时候我们会发现长网址往往难以记忆和分享,尤其是在社交媒体、短信或电子邮件等有字符限制的平台上。

2)在社交平台分享给好友或者其他人,但由于很多原因,有人攻击网站、突然不想分享了,我们的消息却无法撤回了。

3)大家分享出去的链接希望能看见访问数据,以此来观察用户的行为,是否对于自己的分享感兴趣。

以上大家可能遇到的困惑,短链系统都能替大家去解决,让大家的分享体验感大大提升!

项目介绍

短链狗(ShortLinkDog是一个简单高效的 URL 缩短系统,旨在帮助你将长 URL 缩短为易于分享的简洁链接。使用短链狗可以使URL更加简短易于分享,并轻松管理你的链接。

你甚至可以把你的自主网站链接放进短链狗生成短链分享出去,后面别人通过你链接点击,你可以查看到你网站的点击数量,满足个人的小小虚荣心💗

如果你是一名乐于分享的程序员,相信你会爱上它~

我的短链:

发布短链:

还原短链:

功能和特性

用户

  • 用户可以更加直观的看见自己所分享的长链接访问量、以及记录自己的长链接并打上标签
  • 用户可以输入任意长链接来进行短链的生成易于分享
  • 用户可以输入短链接来进行还原出原本的长链接

开发者

  • 开发者可以基于短链狗开发自己的短链系统,后续管理自己的多个项目,并且可以查看每个项目访问量
  • 开发者可以基于短链狗打造自己的短链 SDK,后期可融入到任何项目中

运行方式

1 分钟上手使用

1)打开网站:http://124.70.210.130/

2)然后在网站注册账号

3)点击短链生成

4)按步骤要求填写即可生成短链

5)在我的短链界面就可以查看到短链信息啦~

部署方式

前置条件

  • 需开启 Redis 数据库
  • 需开启 MySQL 数据库

前端部署

  1. 拉取前端代码到本地,使用前端开发工具打开(个人使用 Webstorm)
  2. 安装所需依赖,使用 yarn 命令或者 npm 命令( npm install )

1)找到 package.json 执行 dev 命令

2)当控制台成功出现 localhost:xx 表示启动成功啦

后端部署

1)拉去后端代码到本地,使用 IDEA 打开

2)执行 sql 文件创建数据库以及初始化数据

3)找到 application-dev.yml 配置 MySQL、Redis 的配置(也可以自己写一个 application-local.yml,将 dev 的配置迁移更加规范)

4)启动项目,当控制台出现Tomcat started on port(s): 8204 (http) with context path '/api'表示启动成功。

注意:

如果后端修改端口地址:需修改前端文件 config.ts 以及 constants 的 BACKEND_HOST_LOCAL 地址

config 配置如下:

index.ts:

技术选型

前端

主要技术:

  • React 18
  • Umi 4.x
  • Ant Design 4.x 组件库
  • Ant Design Pro Components 高级组件
  • TypeScript 类型控制
  • Eslint 代码规范控制
  • Prettier 美化代码

后端

主要技术:

  • Spring Boot 2.7.x
  • MyBatis Plus 3.5.x
  • MySQL 8.x
  • Spring AOP
  • Redis 5.x

依赖库:

  • Apache Commons Lang3:工具库
  • Hutool:工具库
  • Knife4j:接口文档生成
  • Sa-Token: 权限认证框架
  • Redisson:redis框架
  • Jsoup:数据抓取

核心设计

短链生成

从一条巨长无比的长链生成一条长度合适的短链,通常包含以下步骤

  • 用户输入长链
  • 将用户输入的长链进行哈希算法
  • 比较hash是否发生冲突,如若冲突将使用分布式id解决
  • 将生成的短链存入数据库、缓存中,等待后续短链映射

短链生成流程图如下:

短链映射

短链的具体原理其实比较简单,说白了就是: 通过短链找到长链(原始链接),然后再重定向到长链地址即可!

具体流程

  • 用户输入短链
  • 通过短链去缓存、数据库中查找长链
  • 再通过302重定向(为什么使用302,不使用301在需求分析会讲解)
  • 前端将重定向跳转到真实服务

下面是简单的流程图

学完这个项目你能得到什么

  • 了解到短链生成的完整流程,后续面对短链的面试题将会得心应手
  • 如何通过一个基本项目框架,来引入其他的项目鉴权系统
  • 如何使用 Redisson 来实现短链的缓存
  • 怎么使用布隆过滤器来判断是否 hash 冲突
  • 如何实现分布式 ID 来解决 hash 冲突
  • 如何通过 Jsoup 来解析长链内容
  • 通过上线短链可以将自己的项目融入,打造属于自己的一个项目王国