付费做网站关键词优化是怎么做的呀,ui设计原型图,创办网站需要哪些步骤,虚拟主机网站建设实训总结本文讲述了什么启发了 FastAPI 的诞生#xff0c;它与其他替代框架的对比#xff0c;以及从中汲取的经验。 如果不是基于前人的成果#xff0c;FastAPI 将不会存在。在 FastAPI 之前#xff0c;前人已经创建了许多工具 。 几年来#xff0c;我一直在避免创建新框架。首先它与其他替代框架的对比以及从中汲取的经验。 如果不是基于前人的成果FastAPI 将不会存在。在 FastAPI 之前前人已经创建了许多工具 。 几年来我一直在避免创建新框架。首先我尝试使用许多不同的框架插件和工具来解决 FastAPI 涵盖的所有功能。
但是有时候没有更好的办法除了创建具有所有这些功能的东西从以前的工具中汲取最佳创意并以最佳方式将它们组合起来使用以前甚至没有的语言功能Python 3.6类型提示。
启发过 FastAPI 的框架
Django
Django 是最流行的 Python 框架受到广泛信任。它用于构建 Instagram 之类的系统。
它与关系数据库例如 MySQL 或 PostgreSQL相对紧密地结合在一起因此以NoSQL 数据库例如 CouchbaseMongoDBCassandra 等作为 django 的主存储引擎并不是一件容易的事。
Django REST Framework
Django REST Framework 是一个非常灵活的框架用于构建 Web API以改善 Django 的 API 功能。
MozillaRed Hat 和 Eventbrite 等许多公司都使用它。
Django REST Framework 是第一个自动生成 API 文档的框架自动生成 API 的接口文档是 FastAPI 框架诞生的缘由之一。
注意
Django REST Framework 框架的作者是 Tom Christie Tom Christie 也创造了 Starlette和 Uvicorn。FastAPI 正是建立在 Starlette 和 Uvicorn 的基础之上。
启发 FastAPI 地方有一个自动 API 文档Web 用户界面可供用户测试。
Flask Flask 是一种轻量级的框架它不包括数据库集成也没有很多的附带的功能虽然这Django 那里是默认提供的。
这个简单性和灵活的特性允许使用 NoSQL 数据库作为主数据存储。尽管文档在某些方面有所技术性但它非常简单因此学习起来相对直观。
它还常用于其他不需要数据库用户管理或 Django 中预建功能的应用程序。尽管其中许多功能都可以通过添加插件来实现。
各个模块之前的解耦使之成为一个“微框架”可以通过扩展为精确地提供所需的东西这是我想要保留的一项关键功能。
考虑到 Flask 的简单性它似乎很适合构建 API。接下来要找到的是 Flask的 “ Django REST Framework”。
启发 FastAPI 地方成为一个微框架。易于混合和匹配所需的工具和零件。拥有一个简单易用的路由系统。
Requests FastAPI 实际上不是 Requests 的替代工具。它们的适用范围非常不同。实际上在FastAPI 应用程序内部使用 Requests 是很常见的。
但是FastAPI 从 Requests 中获得了很多启发。Requests 是一个与API作为客户端进行交互的库而 FastAPI 是一个用于构建 API作为服务器的库。它们或多或少地处于相反的末端彼此互补。Requests 具有非常简单直观的设计非常易于使用并具有合理的默认值。但同时它非常强大且可自定义。
这就是为什么如官方网站所述
Requests 是有史以来下载次数最多的Python软件包之一
您的使用方式非常简单。例如要发出GET请求您可以编写
response requests.get(http://example.com/some/url)
FastAPI 对应的 API 路径操作如下所示
app.get(/some/url)
def read_url():return {message: Hello World}它们使用起来的相似之处如 requests.get(…) 和 app.get(…)。
启发 FastAPI 地方:
拥有简单直观的API。直接直观地使用HTTP方法名称操作。具有合理的默认值功能强大的自定义。Swagger / OpenAPI
我想要 Django REST Framework 的主要功能是自动 API 文档。然后我发现 API 文档有一个标准叫 Swagger 它使用 JSON 或 YAML 来描述。
并且 Swagger API 的 Web 用户界面已经被人创建出来了。因此能够为 API 生成Swagger 文档将允许自动使用此 Web 用户界面。
在某个时候Swagger 被授予 Linux Foundation将其重命名为 OpenAPI。这就是为什么在谈论版本 2.0 时通常会说“ Swagger”对于版本3来说是“ OpenAPI”。
启发 FastAPI 地方: 为API规范采用开放标准而不是使用自定义架构。并集成基于标准的用户界面工具 Swagger UI ReDoc
选择这两个是因为它们相当受欢迎且稳定但是通过快速搜索您可以找到数十个 OpenAPI 的其他替代用户界面可以与FastAPI一起使用。
Flask REST frameworks
有几个 Flask REST frameworks 但经过调查和试用我发现不少项目都停产或放弃还存在有一些长期的问题使得它们并不适合解决前面的问题。
Marshmallow
一个由 API 系统所需的主要功能是数据的序列化就是把数据从编程语言中的对象转称成可以在网络上传输的对象比如数据库中的数据转换为 JSON 对象。将 Python 中的datetime 对象转为字符串等等。
另外一个功能就是数据的验证确保传入的参数是有效的例如有些字段是一个 int类型而不是字符串这在检测输入数据是非常有用的。
如果没有数据验证你就必须用手工写代码来完成所有的检查。
这两点功能就是 Marshmallow 所提供的这些是一个伟大的图书馆之前我经常使用它。
Marshmallow 产生之前 Python 还没有加入类型提示。因此定义一个 schema 你需要引入 Marshmallow 特定的 utils 的和类。
启发 FastAPI 地方: 使用代码来定义提供的数据类型和验证的 schema验证都是自动化的。
FastAPI 使用的框架
Pydantic
Pydantic 是一个库基于Python类型提示来定义数据验证序列化和文档使用JSON模式。这使其非常直观。它可与 Marshmallow 媲美。尽管在基准测试中它比Marshmallow 更快。并且由于它基于相同的Python类型提示因此对编辑器的支持非常棒。
FastAPI 使用它来处理所有数据验证数据序列化和自动模型文档基于JSON Schema。
然后FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中除此之外它还会执行其他所有操作。
Starlette
Starlette 是一种轻量级的 ASGI 框架/工具包是构建高性能 asyncio 服务的理想选择。
它非常简单直观。它的设计易于扩展并具有模块化组件。
它具有
令人印象深刻的性能。
WebSocket支持。
GraphQL支持。
处理中的后台任务。
启动和关闭事件。
测试基于 requests 的客户端。
CORSGZip静态文件流式响应。
会话和 Cookie 支持。
100 的测试覆盖率。
100 类型注释的代码库。
零硬依赖性。
Starlette 是目前测试最快的 Python 框架。只有 Uvicorn 超越了它Uvicorn 不是框架而是服务器。
Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证序列化或API 文档。 这是 FastAPI 在顶部添加的主要内容之一全部基于Python类型提示使用Pydantic。以及依赖注入系统安全实用程序OpenAPI 模式生成等。
技术细节ASGI 是 Django 核心团队成员开发的新“标准”。尽管他们正在这样做但它仍然不是“ Python标准”PEP。但是它已经被多种工具用作“标准”。这可以大大提高互操作性因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器例如 Daphne 或 Hypercorn也可以添加与ASGI兼容的工具例如 python-socketio。
FastAPI 使用它来处理所有核心 Web 部件。在顶部添加功能。类 FastAPI 本身直接继承Starlette。因此使用 Starlette 可以执行的任何操作都可以直接使用 FastAPI 进行。 Uvicorn
Uvicorn 是基于 uvloop 和 httptools 构建的如闪电般快速的 ASGI 服务器。它不是Web框架而是服务器。例如它不提供用于按路径进行路由的工具。那是像 Starlette或FastAPI这样的框架可以提供的。它是 Starlette 和 FastAPI 的推荐服务器。
FastAPI 推荐它为主 Web服务器运行 FastAPI 应用程序。您可以将其与 Gunicorn 结合使用以拥有异步多进程服务器。在“ 部署” 部分中查看更多详细信息。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你