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 的一些重要功能包括 −

  1. Falcon 的最新版本支持 ASGI、WSGI 和 WebSocket。

  2. Falcon 提供对 asyncio 的本机支持。

  3. 它的稳定接口确保了向后兼容性。

  4. Falcon 遵循 REST 架构样式构建 API。

  5. 基于类的 HTTP 资源构建。

  6. Highly-optimized, extensible code base.

  7. Falcon 通过请求和响应类轻松访问标头和正文。

  8. 可用的中间件组件和钩子,用于 DRY 请求处理。

  9. 惯用的 HTTP 错误响应和异常处理。

Falcon - Design Philosophy

Falcon 最大限度减少对象实例化数量,以免创建对象时花费太多开销,并减少内存使用。同一个实例将用于处理该路由上发来的所有请求。

  1. 异常由资源响应者(方法例如 on_get(), on_post(), 等)正确处理。Falcon 并不费力地尝试保护响应者自身代码不受攻击。高质量的 Falcon API 应满足以下要求 −

  2. Falcon 框架是线程安全的。为每个传入的 HTTP 请求创建单独的新请求和响应对象。然而,附加到路由的每个资源类的单个实例在所有请求中共享。中间件对象、钩子、以及自定义的错误处理程序,也被共享。因此,作为一个整体,你的 WSGI 应用将是线程安全的。

  3. 从版本 3.0 开始,Falcon 支持 asyncio 。使用 falcon.asgi.App 类创建异步应用程序,并通过 ASGI 应用程序服务器(例如 Uvicorn )提供服务。

  4. Falcon 的异步版本支持 ASGI WebSocket 协议。

Falcon - Comparison with Other Frameworks

Python Web 框架有两大类 − full-stackmicro 框架。

  1. 全栈框架自带内置功能和类库。 Django, Turbogears,Web2Py 是全栈框架。

  2. 相反,微框架是极简主义的,仅提供最少量的内容;因此,开发者可以自由选择官方或第三方扩展,并且只包含他们所需要的插件。 Flask, Falcon, Pyramid 属于微框架类别。

我们根据以下参数将 Falcon 框架与不同框架进行比较 −

Performance

Falcon 应用非常快,与 Flask 和 Pyramid 等微框架相比。而全栈框架通常很慢。

REST Support

Falcon 是一个旨在用于开发 REST API 和微服务的框架。FastAPI 也支持 REST 开发。Flask 和 Django 没有内置的 REST 支持。但是,可以使用扩展名启用它。

Templating

Falcon 应用程序不应提供模板网页。它未与任何模板库捆绑在一起。不过,可以使用 jinja2Macho 库。另一方面,Flask 对 jinja2 有内置支持。Django 有自己的模板库。FastAPI 还可以处理任何选择的模板库。

Database Support

在 Falcon 中,没有内置的数据库支持。可以使用 SQLAlchemy 模型与关系数据库(如 MyQL、PostgreSQL、SQLite 等)进行交互。另一方面,Django 具有自己的 ORM 框架,可以开箱即用。

Flask 应用程序还可以通过 Flask 扩展与数据库进行交互。TurboGears 的早期版本与 SQLObject ORM 库兼容。较新版本与 SQLAlchemy 兼容。

Flexibility

Falcon 应用程序非常灵活。它是要求高度定制和性能调优的应用程序的理想选择。FastAPI 和 Flask 也能灵活地进行编码,并且不会限制用户使用特定的项目或代码布局。

Security

Falcon 没有内置的安全保障支持。Django 和 FastAPI 等其他框架可确保高度的安全性。Flask 也提供了出色的防护功能,可以抵御 CSRF 和 XSS 攻击等安全威胁。

Testing

Falcon 提供了使用 unittest 和 Pytest 的内置测试支持。Flask 和 Django 也支持 unittest。FastAPI 支持 unittest 和 starlette 测试功能。