基于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:真正见证了应用程序启动的核心入口文件。

后续展望

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

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

相关推荐
武子康12 小时前
H3-World 的动作没按时发生,先检查时间线变成了什么
人工智能·后端·agent
苍何13 小时前
腾讯 Buddy One 来了,办公全家桶一键打通WorkBuddy(附教程)
后端
像风一样的男人@13 小时前
python --基于scp的文件传输助手
开发语言·python
用户03321266636713 小时前
使用 Python 在 Word 文档中添加、修改和删除变量
python
GIS数据转换器13 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
专注仿真13 小时前
动态规划算法详解
人工智能·python·大模型训练·控制算法
adfreedom13 小时前
如何避免每个业务系统中都有几十个枚举查询
后端
全栈陈序员14 小时前
【Python】基础语法入门(二十五)—— 网络编程入门:用 socket 与 requests 联网
python
m0_6399069414 小时前
SpringBoot自动配置原理
java·spring boot·后端
adminwolf14 小时前
GoLiveChat:Open-Source Live Chat Software for Website
python