高性能Web框架的全面指南-FastAPI-从介绍到实际应用 (高性能websocket服务器)
在当今互联网时代,构建高性能的WebAPI是许多开发人员的关注重点。而FastAPI作为一个现代、快速的Web框架,为基于Python类型提示的API构建提供了强大的支持。
FastAPI的特点
- 高性能:使用异步请求处理,能够处理大量的并发请求,提供更好的性能和响应速度。
- 自动生成API文档:无需手动编写文档,减少了繁琐的工作并提高了开发效率。
- 自动验证请求和响应数据:确保数据的完整性和正确性。
- 易于学习和使用:注重简洁性和可读性,使得开发人员能够更快地上手并理解框架的工作原理。
- 豊富な示例和文档:帮助开发人员更好地掌握框架的使用技巧和最佳实践。
FastAPI的应用场景
- RESTful API:提供数据的增删改查功能,满足前后端分离开发的需求。
- WebSocket协议:处理实时通信和推送消息的场景。
- 微服务架构:构建模块化、可扩展的应用程序。
- 高性能数据接口:提供快速可靠的数据访问。
FastAPI的注意事项
- 对于一些简单的API需求,使用FastAPI可能会显得过于复杂和冗余。
- FastAPI是一个相对较新的框架,可能在一些特定的场景或特性上存在一些限制。
结论
FastAPI是一个现代、快速的Web框架,为基于Python的API构建提供了强大的支持。它的高性能、易用性和丰富的功能使得开发人员能够快速构建高效的WebAPI,并提供最佳的性能和可管理性。随着互联网应用的不断发展,FastAPI将在Web开发领域发挥越来越重要的作用,为开发人员带来更多便利和效率。FastAPI-Amis-Admin: 一个拥有高性能,高效率,易拓展的fastapi管理后台框架
fastapi-amis-admin是一个拥有高性能,高效率,易拓展的fastapi管理后台框架. 启发自Django-Admin,并且拥有不逊色于Django-Admin的强大功能.
fastapi-amis-admin 是一个基于 fastapi + amis 开发的高性能并且高效率web-admin框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。fastapi-amis-admin 开发的初衷是为了完善 fastapi 应用生态, 为 fastapiweb应用程序快速生成一个可视化管理后台-amis-admin 遵循 Apache2.0 协议免费开源, 但是为了更好的长期运营与维护此项目,fastapi-amis-admin 非常希望能够得到大家的赞助与支持.
fastapi-amis-admin 由三部分核心模块组成,其中 amis ,fastapi-sqlmodel-crud可作为独立模块单独使用, amis_admin 基于前者共同构建.
FastAPI - 一款新型的 Python Web 框架(对比 Flask)
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。 然而不断的 Google 过程中偶然间发现了 FastAPI 这么一款集成了 Swagger UI 的更新的 Python Web 框架。 起初想要在标题中表达的意思大概是 Flask + Swagger = FastAPI, 后来发现 FastAPI 的闪亮点不仅如此,顺便找了些 Flask 与 FastAPI 对比的文章来,在文后附有链接。 本文不对 Flask 与 FastAPI 的各个方面对进行对比,本人兴趣依然还在 FastAPI 的 Swagger UI 功能,以及与 Flask 的 Blueprint 类似的特性。 如果要拿 Flask 与 FastAPI 比较的话,应该用 Flask 2.x, 因为它开始支持类似 的装饰器,并引入了 async 路由函数。 Flask 是在 2010 年发布的,它构建于 WSGI(Python Web Server Gateway Interface) 之上的,产品环境中运行需与 uWSGI, Gunicorn 搭配,或用 mod_wsgi 模块与 Apache 集成。 因发布较早,所以目前应该有较多的使用者。 Flask 2.0 需要 Python 3.6+ 的支持,如果支持 async, 需 Python 3.7+ FastAPI 发布于 2018 年,构建于 ASGI(Asynchronous Server Gateway Interface) 之上,在 IO 密集型的应用中有更优越的性能。 生成环境中配合 ASGI 服务器,如 Uvicorn 或 Hypercorn . FastAPI 最为亮丽的特性是集成了 Swagger UI -- 外加一个福利 ReDoc 。 FastAPI 需 Python 3.6+ 版本。 毕竟是在开始学一个新的框架,还是从它的基本用法开始,途中会穿插与 Flask 的对比。 安装: 当前安装的 fastapi 版本为 0.70.1, uvicorn 版本为 0.16.0。 开始第一个例子,摘自官方 创建一个 文件,内容为 注:以上两个函数前面可以加上 async关键字 启动服务,用命令 注: uvicorn --help列出详细帮助,如启动多少个 worker, 绑定网络接口和端口号, 配置 SSL 证书等。 访问服务 另一个服务就是与 Flask 的对比 回顾一个 Flask 启动服务的方式有 如果程序文件名为 或的话,可以省略FLASK_APP环境变量,直接执行flask run就行。 另一种方式就是在代码中加上 main 入口 然后像普通 Python 代码一样执行 对于 FastAPI, 如果总是要用 uvicorn来启动服务的话,在 IDE 中调用就变得不那么便利。 由于uvicorn本身就是 Python 实现,当然也就可以把命令过程写到 Python 代码中 注() 可接受更多的参数,相当于 uvicorn --help可接受的。 同样把 当作普通 Python 程序来启动即可 前面讲过,FastAPI 进入我的视野最首要的一个原因就是它集成了 Swagger UI, 在启动了 FastAPI 服务后,只要访问熟悉的 Swagger UI 即刻映入眼帘 同时注意到函数映射为 API 的名称,由于参数是带有类型提示的,所以在 SwaggerUI 中也能看到相应的类型。 其他定制 Swagger UI 的工作需要时可细细研究。 FastAPI 除了 SwaggerUI 外,还同时给了我们另一个选择,那就是 redoc, 访问看到下面的界面 我也是头一回从 FastAPI 这里了解到还有一个 Redoc 的 Web API 文档工具,它和 SwaggerUI 类似,都是支持 Open API。 使用 FastAPI 时,在 API 文档中产生请求/响应的 Model 类型也很简单,下面的例子同时包含自定义的输入输出类型 下面是 的全新内容 再查看文档,看到 PUT /items/{item_id} 的界面如下 我们能看到请求与响应中的 Example Value 和 Schema 定义 梳理完 FastAPI 的自动 API 文档功能,进入下一个话题 FastAPI 类似于 Flask 的 Blueprints 功能没有一个特定的名称,只笼统的给出解决方案 Bigger Applications - Multiple Files . 我们来看一下它是怎么实现的。 这里简化官方的例子,排除了 dependencies 的应用,要用到的目录结构为 每个目录中都可以放一个 __init__文件,标识为包,接着是每个文件的内容 app/internal/ app/routers/ app/routers/ 在每个单独定义路由的文件里用到的是 APIRouter, 它相当是一个迷你的FastAPI, 也类似于 Flask 的Blueprint. 上面分别展示了两种 APIRouter 的声明方式,声明时带不带 prefix 和 tags。 同时在为函数定义路由时也可指定 tags,在后面我们将会注意到 tags 只是为 API 文档分类用的。 app/ 这里实际上使用了三种定义路径前缀与 tags(API 分类) 的方式 现在运行 查看 SwaggerUI到目前为止我重点关注 FastAPI 的就是以上那两个特性:自动 API 文档与大程序多文件(Blueprint) 功能。 其他的特性可查阅 FastAPI 的 Features 。 比如:原文
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。