- Python Falcon教程
- Python Falcon - 主页
- Python Falcon - 简介
- Python Falcon - 环境设置
- Python Falcon - WSGI 与 ASGI
- Python Falcon - Hello World(WSGI)
- Python Falcon - 女服务员
- Python Falcon - ASGI
- 蟒蛇Falcon - Uvicorn
- Python Falcon - API 测试工具
- 请求与响应
- Python Falcon - 资源类
- Python Falcon - 应用程序类
- Python Falcon - 路由
- Falcon - 后缀响应者
- Python Falcon - 检查模块
- Python Falcon - Jinja2 模板
- Python Falcon - cookie
- Python Falcon - 状态代码
- Python Falcon - 错误处理
- Python Falcon - 钩子
- Python Falcon - 中间件
- Python Falcon - CORS
- Python Falcon - Websocket
- Python Falcon - Sqlalchemy 模型
- Python Falcon - 测试
- Python Falcon - 部署
- Python Falcon 有用资源
- Python Falcon - 快速指南
- Python Falcon - 有用的资源
- Python Falcon - 讨论
Python Falcon - 简介
Falcon是一个用于开发关键任务 REST API 和微服务的 Python 库。它支持 WSGI 和 ASGI 规范。Falcon框架由Kurt Griffiths于2013年1月开发。Falcon的最新版本是3.1.0,于2022年3月发布。
Falcon 是一个轻量级的 Web 开发框架。其极简设计允许开发人员根据需要选择最佳策略和第三方软件包。
Falcon - 重要特性
Falcon 是根据 Apache 2.0 许可证条款发布的。
Falcon 的一些重要特征包括 -
最新版本的 Falcon 支持 ASGI、WSGI 以及 WebSocket。
Falcon 为 asyncio 提供本机支持。
其稳定的接口确保向后兼容性
Falcon 遵循 REST 架构风格来构建 API。
基于类的 HTTP 资源构造。
高度优化、可扩展的代码库。
Falcon 通过请求和响应类提供对标头和正文的轻松访问
可用于 DRY 请求处理的中间件组件和挂钩。
惯用的 HTTP 错误响应和异常处理。
Falcon-设计理念
Falcon 最小化实例化对象的数量,以避免创建对象的开销,并减少内存使用。同一实例将用于服务该路由上传入的所有请求。
异常由资源响应者正确处理(例如on_get()、on_post()等方法)。Falcon 并没有尽力保护响应者代码免受自身侵害。高质量的 Falcon API 应满足以下要求 -
资源响应者将响应变量设置为合理的值。
您的代码经过充分测试,代码覆盖率很高。
每个响应程序中都提供了自定义错误处理程序来预测、检测和处理错误。
Falcon 框架是线程安全的。为每个传入的 HTTP 请求创建单独的新 Request 和 Response 对象。但是,附加到路由的每个资源类的单个实例在所有请求之间共享。中间件对象、挂钩和自定义错误处理程序也是共享的。因此,您的 WSGI 应用程序作为一个整体将是线程安全的。
从 3.0 版本开始,Falcon 支持asyncio。使用falcon.asgi.App类创建异步应用程序,并通过 ASGI 应用程序服务器(例如Uvicorn )为其提供服务。
Falcon 的异步版本支持 ASGI WebSocket协议。
Falcon - 与其他框架的比较
Python Web 框架主要分为两大类:全栈框架和微框架。
全栈框架带有内置功能和库。Django、Turbogears和Web2Py是全栈框架。
相比之下,微框架是简约的,只提供最低限度的功能;因此,开发人员可以自由选择官方或第三方扩展,并且仅包含他们需要的插件。Flask、Falcon、Pyramid 都属于微框架范畴。
我们根据以下参数将 Falcon 框架与不同框架进行比较 -
表现
与 Flask、pyramid 等微框架相比,Falcon 应用速度非常快。全栈框架通常很慢。
休息支持
Falcon 旨在成为 REST API 和微服务开发的首选框架。FastAPI 还鼓励 REST 开发。Flask 和 Django 没有内置的 REST 支持。但是,可以使用扩展来启用它。
模板化
Falcon 应用程序不应提供模板网页。它不与任何模板库捆绑在一起。但是,可以使用jinja2或Macho库。另一方面,Flask 内置了对jinja2的支持。Django 有自己的模板库。FastAPI 还可以处理任何选择的模板库。
数据库支持
Falcon 数据库支持不是内置的。可以使用 SQLAlchemy 模型与 MySQL、PostgreSQL、SQLite 等关系数据库进行交互。另一方面,Django 有自己的 ORM 框架,可以开箱即用。
Flask 应用程序还可以通过 Flask 扩展与数据库交互。TurboGears 的早期版本与 SQLObject ORM 库兼容。新版本与 SQLAlchemy 兼容。
灵活性
Falcon的应用非常灵活。它非常适合需要高度定制和性能调整的应用程序。FastAPI 和 Flask 的编码也很灵活,不会将用户限制在特定的项目或代码布局中。
安全
Falcon 没有内置支持来确保安全。Django 和 FastAPI 等其他框架确保了高度的安全性。Flask 还针对 CSRF 和 XSS 攻击等安全威胁提供出色的保护。
测试
Falcon 使用 unittest 和 Pytest 提供内置测试支持。Flask 和 Django 也支持单元测试。FastAPI 支持单元测试和星形测试功能。