FastAPI 使用的框架

FastAPI 使用的框架

  • Pydantic
    • Pydantic 是一个库,基于Python类型提示来定义数据验证,序列化和文档(使用JSON模式)。这使其非常直观。它可与 Marshmallow 媲美。尽管在基准测试中它比Marshmallow 更快。并且由于它基于相同的Python类型提示,因此对编辑器的支持非常棒。

    • FastAPI使用它来处理所有数据验证,数据序列化和自动模型文档(基于JSON Schema)。然后,FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中,除此之外它还会执行其他所有操作。

  • Starlette
    • Starlette 是目前测试最快的 Python 框架。只有 Uvicorn 超越了它,Uvicorn 不是框架,而是服务器。

    • Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证,序列化或API 文档。

    • 这是 FastAPI 在顶部添加的主要内容之一,全部基于Python类型提示(使用Pydantic)。以及依赖注入系统,安全实用程序,OpenAPI 模式生成等。
    • Starlette 是一种轻量级的 ASGI 框架/工具包,是构建高性能 asyncio 服务的理想选择。它非常简单直观。它的设计易于扩展,并具有模块化组件。

      • 令人印象深刻的性能
      • WebSocket支持
      • GraphQL支持
      • 处理中的后台任务
      • 启动和关闭事件
      • 测试基于 requests 的客户端
      • CORS,GZip,静态文件,流式响应
      • 会话和 Cookie 支持
      • 100% 的测试覆盖率
      • 100% 类型注释的代码库
      • 零硬依赖性
  • Uvicorn
    • Uvicorn 是基于 uvloop 和 httptools 构建的如闪电般快速的 ASGI 服务器。它不是Web框架,而是服务器。例如,它不提供用于按路径进行路由的工具。那是像 Starlette(或FastAPI)这样的框架可以提供的。它是 Starlette 和 FastAPI 的推荐服务器。

    • FastAPI 推荐它为主 Web服务器运行 FastAPI 应用程序。您可以将其与 Gunicorn 结合使用,以拥有异步多进程服务器。在“ 部署” 部分中查看更多详细信息。

 

技术细节:

   ASGI 是 Django 核心团队成员开发的新“标准”。尽管他们正在这样做,但它仍然不是“ Python标准”(PEP)。但是,它已经被多种工具用作“标准”。这可以大大提高互操作性,因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器(例如 Daphne 或 Hypercorn),也可以添加与ASGI兼容的工具,例如 python-socketio。

  FastAPI 使用它来处理所有核心 Web 部件。在顶部添加功能。类 FastAPI 本身直接继承Starlette。因此,使用 Starlette 可以执行的任何操作,都可以直接使用 FastAPI 进行。

 

https://zhuanlan.zhihu.com/p/111710808

posted @ 2021-03-09 16:07  薄荷味日记  阅读(379)  评论(0编辑  收藏  举报