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

后续展望

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

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

相关推荐
开心就好202516 小时前
iOS应用性能监控全面解析:CPU、内存、FPS、卡顿与内存泄漏检测
后端
vyuvyucd16 小时前
Qwen-1.8B-Chat昇腾Atlas800TA2部署实战
python
轻竹办公PPT16 小时前
2026 年工作计划 PPT 内容拆解,对比不同 AI 生成思路
人工智能·python·powerpoint
癫狂的兔子16 小时前
【Python】【Flask】抽奖功能
开发语言·python·flask
linuxxx11016 小时前
python变量引用的小案例
python
问今域中17 小时前
Spring Boot 请求参数绑定注解
java·spring boot·后端
计算机程序设计小李同学17 小时前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
2501_9361460417 小时前
烟草叶片病害检测_YOLO11-C3k2-MSBlock模型详解
python
Data_agent17 小时前
Python 编程实战:函数与模块化编程及内置模块探索
开发语言·python
十铭忘17 小时前
windows系统python开源项目环境配置1
人工智能·python