基于FastAPI实现短链重定向(1) -设计

前言

对于深受广大开发者喜爱的FastAPI框架,我在此之前已经投入学习并实践了一段时日。随着掌握深入,我利用此框架改造并提升了原先的代码覆盖率统计服务。然而,为了能进一步掌握并熟练运用该框架,我总是心怀一种想要着手完成更多练习项目的强烈欲望。近日,无意间获得了这样一份颇具挑战性的训练机会,那便是在公司业务推广中采用以短信形式向客户传递推广信息,同时为此需在短信中加入特定的推广链接。阿里云提供的短信服务规定了短信最大长度为500字符,因此对过长过细的网址进行简化转变无疑是非常必要的。以此项目为契机,我会倾尽全力,参照业内在实际开发中的典型思维模式,充分利用FastAPI框架来进行实践,力求通过此次锻炼,更熟练地掌握这一优秀的编程框架。

需求分析

关键需求: 短链重定向

附加需求: 记录点击链接的次数、依据不同渠道批量生成短链内容、构建短链用以验证用户身份及权限

技术实施

我们选用基于SQLite 3数据库以存储短链信息,同时利用SQLAlchemy进行异步的数据交换。

表格设计

此需求相对简单明了,为了满足现有需求,我们初步拟定设计以下表格:分别称之为用户信息表(user)和短链信息表(short_url)。这两大表便构成我们实现需求所需的全部基础要素。

user表用于存储用户登录详情,其中包括如下字段:

  • username:表示用户名;
  • password:为用户设置的密码;
  • created_at:存储用户添加账号的日期;

而short_url表则包括如下元素:

  • short_tag:代表短链的标签标记;
  • short_url:将完整的短链地址汇聚其中;
  • long_url:存储指向实际页面的长链地址;
  • visits_count:记录短链被访问的总次数;
  • created_at:记录短链生成的具体时刻;
  • created_by:描述短链出自哪位用户之手所构造;
  • msg_context:展示短链中所包含的群发信息细节。

项目结构设计

FastAPI官方为有意于学习或上手的战友们提供了许多具有指导意义的demo资源。若您对此饶有兴致,不妨前往查阅:github.com/tiangolo/fu...

参考上述公开资料以及其他知名开源项目的设计理念,经过慎重考虑后,我决定将项目整体架构设计成如下格局:

  • api:主要放置已然编译好的API,其中包括用户登陆以及短链访问跳转入驻等关键路由信息。
  • config:主要储存设定信息,囊括数据库连接配置诸如此类的必要资讯。
  • db:主要储存定义与数据库便捷建立关联关联的相关配置以及与之紧密相连的非腹腔化对象实例。
  • dependencies:专用来妥善保管相关的依赖注入依赖项。
  • models:概括性地抽象出数据库表格中映射的ORM模型类。
  • schemas:墙纸如何展现各个接口的入站参数集、结束输出集的各个字段类型的固定含义。
  • services:集中存放按照ORM模型类精炼好的CRUD基本操作。
  • utils:容纳了项目期间实际运用到的各类实用工法类。
  • app.py:用于精确定制FastAPI的对象属性以及与初始化相关的路由注册操作流程。
  • main.py:真正见证了应用程序启动的核心入口文件。

后续展望

遵照所需,我们已完成初步方案,包括精确设定数据库和分布项目等环节。现正全力以赴实现各功能特性。尽管不可避免地会遭遇全新领域的挑战,但请放心,届时我们将适时发布相关文章提供深入解读与说明。

敬请期待:下一期会详尽介绍数据库与模型定义的基础设置,诚挚邀请志同道合者继续关注此专栏,并为其点赞及收藏支持,谢谢啦。

相关推荐
uhakadotcom24 分钟前
Lovable:用AI轻松打造完整应用,零基础也能快速开发
后端·面试·架构
小希爸爸26 分钟前
4、中医基础入门和养生
前端·后端
码起来呗31 分钟前
基于SpringBoot的高校学习讲座预约系统-项目分享
spring boot·后端·学习
坐吃山猪34 分钟前
Python-Agent调用多个Server-FastAPI版本
开发语言·python·fastapi
Asthenia041238 分钟前
Reactor 模型详解:从单线程到多线程及其在 Netty 和 Redis 中的应用
后端
Bruce-li__1 小时前
使用Django REST Framework快速开发API接口
python·django·sqlite
小兜全糖(xdqt)1 小时前
python 脚本引用django中的数据库model
python·django
Arenaschi1 小时前
SQLite 是什么?
开发语言·网络·python·网络协议·tcp/ip
纪元A梦1 小时前
华为OD机试真题——推荐多样性(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
听雨·眠1 小时前
go语言中defer使用指南
开发语言·后端·golang