FastAPI是一个高性能的Web框架,用于构建API,它本身提供了丰富的功能,但还可以与许多其他库和组件一起使用,以扩展其功能。以下是一些FastAPI常用的组件库:
一、Starlette:
-
- FastAPI实际上是Starlette的一个子类,因此Starlette的所有特性在FastAPI中都可以使用。
- Starlette是一个轻量级的异步Web框架,支持异步处理、Web应用程序开发、中间件支持、WebSocket支持和与其他Python库和框架的集成
二、Pydantic:
-
- FastAPI与Pydantic完全兼容,使得数据验证变得简单且自动化。
- Pydantic用于数据验证和设置管理,允许用户定义数据模型和验证规则。
三、FastAPI-pagination:
-
- 这是一个允许从API路由发送简单分页响应的库。
- 它简化了分页逻辑的实现,使开发人员不必自己编写整个分页逻辑。
四、FastAPI-MVC:
-
- 这是一个用于提高Python开发人员生产力的工具,可以从单个shell命令开始制作高质量的FastAPI生产就绪API。
- 它提供了MVC Python项目的样板设置,包括Python Poetry依赖管理、Makefile、GitHub操作和Docker设置等。
五、FastAPI-Mail:
-
- 这是一个轻量级库,帮助开发人员轻松地从FastAPI项目发送邮件,并支持后台任务管理。
- 开发人员可以使用此库发送基于文本和文件的电子邮件。
六、Tortoise-ORM:
-
- 这是一个受Django启发的ORM,允许开发人员以Django式的方式使用选择的关系数据库。
- 它提供了对关系数据库的支持,使数据操作变得简单。
七、FastAPI-Cache:
-
- 虽然文章中没有具体提到这个库,但在构建生产级API时,缓存通常是一个重要组件。
- 有可能存在的第三方库(如fastapi-cacheutils或fastapi-caches等)可以帮助实现API的缓存功能。
八、UVicorn:
-
- UVicorn是一个用于部署FastAPI应用的高性能ASGI服务器。
- 它可以与FastAPI一起使用,以提供快速且可扩展的Web服务器。
九、Middleware和Plugins:
-
- FastAPI支持中间件和插件的集成,允许开发人员在请求和响应处理过程中插入自定义的功能。
- 这可以用于身份验证、请求日志记录、异常处理等目的。
十、SQLAlchemy:
如果你需要在 FastAPI 中使用数据库,SQLAlchemy 是一个优秀的选择。它是一个功能强大的 ORM(对象关系映射)库,可以与各种关系型数据库一起使用
十一、JWT (JSON Web Tokens):
对于身份验证和授权,JWT 是一种常见的选择。FastAPI 可以与 PyJWT 等 JWT 库一起使用,以实现基于令牌的身份验证
十二、FastAPI-Admin:
这是一个基于 FastAPI 和 Vue.js 的 CRUD 生成器和管理界面生成器,可帮助快速构建基于数据库的 Web 应用程序的管理界面。FastAPI-CRUDRouter: FastAPI-CRUDRouter 是一个用于生成 CRUD 操作的 FastAPI 路由的库。它可以自动生成常见的 CRUD 路由,简化了与数据库交互的过程。FastAPI-Admin:FastAPI-Admin 是一个基于 FastAPI 和 Vue.js 的 CRUD 生成器和管理界面生成器。它提供了一个简单但功能强大的管理界面,用于管理基于数据库的 Web 应用程序的数据。FastAPI-Admin 的界面设计较为传统,主要以表格形式展示数据,并提供了基本的 CRUD 操作。适合于需要快速构建简单管理界面的应用程序,对于开发人员而言,定制化程度较高
十三、FastAPI-AMIS-Admin:
是基于 FastAPI 和 AMIS(一种前端 UI 框架)的管理界面生成器。AMIS 提供了一种通过 JSON 配置来生成界面的方式,因此 FastAPI-AMIS-Admin 允许开发者通过配置来定制管理界面,而不需要编写大量的前端代码。FastAPI-AMIS-Admin 的界面更加灵活,可以通过配置来生成各种类型的界面组件,包括表格、表单、图表等,具有较高的定制化程度。适合于需要定制化程度较高的管理界面,或者需要更丰富交互和数据可视化的应用程序。对于小应用来说,如果你只需要一个简单的 CRUD 界面来管理数据,那么 FastAPI-Admin 可能更加适合,因为它提供了一个简单而直观的界面,易于上手。而如果你希望界面更加灵活,并且有定制化的需求,那么 FastAPI-AMIS-Admin 可能更适合,因为它允许你通过配置来定制界面,满足不同的需求。