Python Falcon 简明教程
Python Falcon - Introduction
Falcon 是一个 Python 库,用于开发任务关键型 REST API 和微服务。它同时支持 WSGI 和 ASGI 规范。Falcon 框架由 Kurt Griffiths 于 2013 年 1 月开发。Falcon 的最新版本是 3.1.0,于 2022 年 3 月发布。
Falcon 是一款轻量级的 Web 开发框架。其极简主义设计允许开发人员根据需要选择最佳策略和第三方包。
Falcon - Important Features
Falcon 根据 Apache 2.0 License 条款发布。
Falcon 的一些重要功能包括 −
-
Falcon 的最新版本支持 ASGI、WSGI 和 WebSocket。
-
Falcon 提供对 asyncio 的本机支持。
-
它的稳定接口确保了向后兼容性。
-
Falcon 遵循 REST 架构样式构建 API。
-
基于类的 HTTP 资源构建。
-
Highly-optimized, extensible code base.
-
Falcon 通过请求和响应类轻松访问标头和正文。
-
可用的中间件组件和钩子,用于 DRY 请求处理。
-
惯用的 HTTP 错误响应和异常处理。
Falcon - Design Philosophy
Falcon 最大限度减少对象实例化数量,以免创建对象时花费太多开销,并减少内存使用。同一个实例将用于处理该路由上发来的所有请求。
-
异常由资源响应者(方法例如 on_get(), on_post(), 等)正确处理。Falcon 并不费力地尝试保护响应者自身代码不受攻击。高质量的 Falcon API 应满足以下要求 −
-
Falcon 框架是线程安全的。为每个传入的 HTTP 请求创建单独的新请求和响应对象。然而,附加到路由的每个资源类的单个实例在所有请求中共享。中间件对象、钩子、以及自定义的错误处理程序,也被共享。因此,作为一个整体,你的 WSGI 应用将是线程安全的。
-
从版本 3.0 开始,Falcon 支持 asyncio 。使用 falcon.asgi.App 类创建异步应用程序,并通过 ASGI 应用程序服务器(例如 Uvicorn )提供服务。
-
Falcon 的异步版本支持 ASGI WebSocket 协议。
Falcon - Comparison with Other Frameworks
Python Web 框架有两大类 − full-stack 和 micro 框架。
-
全栈框架自带内置功能和类库。 Django, Turbogears, 和 Web2Py 是全栈框架。
-
相反,微框架是极简主义的,仅提供最少量的内容;因此,开发者可以自由选择官方或第三方扩展,并且只包含他们所需要的插件。 Flask, Falcon, Pyramid 属于微框架类别。
我们根据以下参数将 Falcon 框架与不同框架进行比较 −
REST Support
Falcon 是一个旨在用于开发 REST API 和微服务的框架。FastAPI 也支持 REST 开发。Flask 和 Django 没有内置的 REST 支持。但是,可以使用扩展名启用它。
Templating
Falcon 应用程序不应提供模板网页。它未与任何模板库捆绑在一起。不过,可以使用 jinja2 或 Macho 库。另一方面,Flask 对 jinja2 有内置支持。Django 有自己的模板库。FastAPI 还可以处理任何选择的模板库。
Database Support
在 Falcon 中,没有内置的数据库支持。可以使用 SQLAlchemy 模型与关系数据库(如 MyQL、PostgreSQL、SQLite 等)进行交互。另一方面,Django 具有自己的 ORM 框架,可以开箱即用。
Flask 应用程序还可以通过 Flask 扩展与数据库进行交互。TurboGears 的早期版本与 SQLObject ORM 库兼容。较新版本与 SQLAlchemy 兼容。