FastApi(自用脚手架)+Snowy搭建后台管理系统(1)--前言
新篇序言
新年伊始,祝各位新的一年前程似锦,鹏程万里~!因为个人一些原因许久没有更新相关FastApi知识点。之前也约定好要更新相关Fastapi脚手架,但是也一直没提上议程~
刚好近期有点点闲暇时间了,想来还是需要坚持继续分享一些我自己个人的使用框架中一些经验,也希望能得到更多大佬提点,也只有分享自己所得才能有所获。所以接下来我个人会编写基于自己最新一个脚手架来做一个后台的管理系统。
至于相关后台管理系统,现在开源出来很多,鉴于个人的前端经验不足,只是略懂皮毛之上,所以接下来的关于基于FastApi搭建一个管理后台系统,将基于Snowy来搭建后台管理系统的模板。
需要说明的是本后台管理系统不做任何的商用,仅限于我个人用于结合FastApi框架做的一些相关后台API接口的分享。
Snowy介绍
Snowy(SnowyAdmin)是国内首个国密前后端分离快速开发平台,集成国密加解密插件, 软件层面完全符合等保测评要求,同时实现国产化机型、中间件、数据库适配,是您的不二之选! 技术框架与密码结合,让更多的人认识密码,使用密码;更是让前后分离“密”不可分。采用SpringBoot+MybatisPlus+AntDesignVue+Vite 等更多优秀组件及前沿技术开发,注释丰富,代码简洁,开箱即用! Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯洁的“,寓意框架追求简洁至上,大道至简。(以上的文字来自于 Snowy官网的介绍)
关于最新脚手架核心说明
最新的脚手架,个人较于之前旧的版本有很大的改动,所以再开始之前有必要的做一下相关一些说明。最新的脚手架整体的结构相较于以前也变动很大。具体脚手架结构如下图所示:
整体结构图示:
Libs结构图示:
中间件结构图示:
自定义插件结构图示:
其中比较核心主要如上述图示中的关键一些核心:
- app---关于约束整个应用启动相关注册中间件或路由流程约束规范。
- auth---有关于认证相关一些工具类的封装。
- db---一些关于数据库使用过程相关场景工具的封装。
- libs---一些用到第三方库引入或自定义依稀lib包。
- middleware 一些常用的中间件或基础中间件封装。
- plugins--- 则是已插件方式注入到Fastapi框架中,避免对原有框架有侵入。
- aiojobs 基于aiojobs第三方库的的后台异步任务
- arq 主要引入基于arq处理相关消息队列任务的库。
- async_cashews 针对异步缓存使用,它还支持限流以及熔断机制。
- cache_house 也是一个redis缓存处理库,它支持同步和异步。
- db 插件下则包含有peewee和sqlalchemy等相关初始化操作的插件库。
- globalrequest 全局变量的request插件。
- jaeger 基于opentracing和jaeger-client链路追踪插件。
- loguru 基于loguru记录相关请求日志(包含请求报文和响应报文等日志记录,支持链路ID请求,分集中式和分离式日志记录)。
- mq 基于rabbitmq封装简单的操作插件。
- profiler 用于分析应用程序的请求的相关性能。
- pyee_event 基于pyee实现类似的信号事件插件,实现类似flask中自定义相关信号发送处理。支持同步和异步。
- redis 则是对redis的异步和同步一些API接口封装的插件库。
- request_event 实现类似的falsk的关于request前置请求和后置请求的拦截机制。
- scheduler 是对apscheduler和rocketry定时任务的简单封装。
- sentry 相对简单,就纯粹是sentry的中间件的使用做简单的封装。
- sessions 是处理sessions相关封装处理。支持可选后台存贮。
- swaggerui 解决网络访问操作文档的时候遇到网络访问异常的问题插件库。
最新脚手架整体上来说主要是针对插件封装,因为个人觉得本身FsasApi框架封装已很好,没必要进行太大的侵入性的封装,所以我个人喜欢使用平和方式来定义一些其他第三方库的融入和使用。这样对原有业务也不会造成非常大的改动。所以最新的框架都是围绕插件来定义多一点。后续再针对相关插件做相关的介绍。
关于后台管理系统结构说明
后台管理系统上,主要基于前面的脚手架之上来搭建,整体的前端模板都是直接使用[Snowy(SnowyAdmin)]。而后端上的相关分层结构则接近java所提供的结构,当然也略有所区别。整体的后端如下图所示:
如上图所示:
- snowy_common 是对整个后台管理系统一些公共资源分层
- snowy_controller 则是对基本的使用类方式定义路由组时候基础controller的封装
- snowy_dependencies 则是对整体系统后台中全局使用到一些依赖注入项的封装
- snowy_errors 则是对整体的后台系统中相关异常处理封装
- snowy_responses 整体后台系统中相关统一响应头报文的封装
- snowy_logs 是日志生成文件的存放位置
- snowy_system 是整个后台系统统一封装
- snowy_business 是后台管理系统其他业务
- snowy_models 是后台管理系统中核心的模型(仅针对管理系统业务模型)
- snowy_modules 则是针对后台关系中每个业务划分
- snowy_script 相关数据库资源脚本处理
- snowy_settings 系统配置相关
- snowy_application 应用程序对象封装
- snowy_launch 应用启动入口
关于相关脚手架和后台系统简单介绍先到此为止。后续,我个人会从脚手架搭建开始,一步一步介绍我个人的封装的思路。欢迎持续关注!如果各位大佬有什么指点,随时联系我提携一下小弟我~感恩!
以上仅仅是个人结合自己的实际需求,做学习的实践笔记!如有笔误!欢迎批评指正!感谢各位大佬!
结尾
转载自:https://juejin.cn/post/7195176987957133371