FastAPI是一款专业的Web开发框架工具。用户在开发设计新网站时Web开发框架是必不可少的!FastAPI提供独立的TechEmpower基准测试程序。在Uvicorn下运行的FastAPI应用程序是可用的最快的Python框架之一。仅在Starlette和Uvicorn本身中,基准和速度¶当您检查基准时,通常会看到几种不同类型的工具被视为等效工具。具体来说,比较了Uvicorn,Starlette和FastAPI。该工具解决的问题越简单,将获得更好的性能,并且大多数基准测试尚未测试该工具提供的其他功能。该软件提供其他数据类型,cookie参数,标头参数,响应模型,其他模型,响应状态代码,表数据和其他内容编辑。如果需要此软件,请下载!
使用说明:
编辑器支持¶所有框架的设计都易于使用和直观,并且所有决定甚至在开始开发之前就已经在多个编辑器上进行了测试,以确保最佳的开发体验。
在上一次Python开发人员调查中,很明显,最常用的功能是“自动完成”。
整个FastAPI框架都可以满足此要求。自动补全适用于任何地方。
您几乎不需要返回文档。
您的编辑器可以为您提供以下帮助:
在Visual Studio代码中:
在PyCharm中:
您将获得以前甚至认为不可能的代码。例如,价格来自请求的JSON正文中的键(可能是嵌套键)。
不再需要键入错误的键名,在文档之间来回调用或上下滚动以查找是否最终使用了username或user_name。
简短¶对于所有内容,它在所有位置都有合理的默认值和可选配置。可以对所有参数进行微调,以执行所需的操作并定义所需的API。
但是默认情况下,所有这些“都可以正常工作”。
验证方法¶验证大多数(或全部?)Python数据类型,包括:
JSON对象(dict)。
List定义了项目类型()的JSON数组。
字串(str)字段,用于定义最小和最大长度。
具有最小值和最大值的数字(int,float)等
验证更多外来类型,例如:
网址。
电子邮件。
UUID。
...和别的。
所有验证均由全面而强大的Pydantic处理。
安全和身份验证¶集成的安全和身份验证。无需破坏数据库或数据模型。
OpenAPI中定义的所有安全方案,包括:
HTTP是基本的。
OAuth2(也带有JWT令牌)。查看使用JWT的OAuth2教程。
API密钥:
标头。
查询参数。
Cookies等
以及Starlette的所有安全功能(包括会话Cookie)。
所有这些都是可重用的工具和组件
,易于与您的系统,数据存储,关系数据库和NoSQL数据库等集成。
依赖注入¶FastAPI包含一个非常易于使用但功能强大的“依赖注入”系统。
甚至依赖项也可以具有依赖项,从而创建了依赖项的层次结构或“图”。
全部由框架自动处理。
所有依赖项都可能需要来自请求的数据,并且添加了路径操作约束和自动文档。
甚至可以自动验证依赖项中定义的路径操作参数。
支持复的用户身份验证系统,数据库连接等
无需折衷使用数据库,前端等。但是它可以轻松地与所有数据库集成。
无限的“插件”。否则,如果没有插件,则导入并使用所需的代码。
任何集成设计都非常易于使用(具有依赖项),因此您可以使用两行代码(使用与路径操作相同的结构和语法)为应用程序创建“插件”。
已测试100%的测试覆盖率。
100%类型的注释代码库。
用于生产应用。
Starlette函数¶FastAPI与Starlette(基于Starlette)完全兼容。因此,您拥有的任何其他Starlette代码也将起作用。
FastAPI实际上是Starlette的子类。因此,如果您已经知道或使用Starlette,大多数功能将以相同的方式工作。
使用FastAPI,可以获得Starlette的所有功能(因为FastAPI只是类固醇上的Starlette):
令人印象深刻的表现。它是可用的最快的Python框架之一,可与NodeJS和Go媲美。
WebSocket支持。
GraphQL支持。
处理中的后台任务。
开始和闭事件。
测试基于客户端的请求。
COR,GZip,静态文件,流式响应。
会话和Cookie支持。
100%的测试覆盖率。
100%类型的注释代码库。
金字塔功能¶FastAPI与Pydantic完全兼容(并基于Pydantic)。因此,您拥有的任何其他Pydantic代码也将起作用。
包括也基于Pydantic的外部库,例如用于数据库的ORM和ODM。
这也意味着在许多情况下,您可以将从请求中获得的同一对象直接传递到数据库,因为所有内容都会被自动验证。
反之亦然,在许多情况下,您只需要将从数据库中获取的对象直接传递给客户端即可。
使用FastAPI,可以获得Pydantic的所有功能(因为FastAPI基于Pydantic进行所有数据处理):
无脑:
无需学习新的架构定义微语言。
如果您知道Python类型,就会知道如何使用Pydantic。
玩一您的IDE / lint /大脑:
因为pydantic数据结构只是您定义的类的实例;自动完成,排序规则,mypy和您的直觉都应该与验证的数据一起正常工作。
快速:
在基准测试中,Pydantic比所有其他测试库都快。
验证复杂的结构:
分层Pydantic模型的使用,在Python中键入List和Dict等。
通过验证器,可以轻松,轻松地定义,检查和记录复杂数据模式并将其记录为JSON模式。
您可以具有深度嵌套的JSON对象,并使其全部经过验证和注释。
可扩展性:
Pydantic允许您定义自定义数据类型,或者可以在验证器修饰器修饰的模型上使用方法来扩展验证。
100%的测试覆盖率。
Python类型简介¶Python支持可选的“类型提示”。
这些“类型提示”是允许您声明变量类型的特殊语法。
通过声明变量的类型,编辑器和工具可以为您提供更好的支持。
这只是有关Python类型提示的快速教程/综述。它仅涵盖与FastAPI一起使用所需的最低要求...实际上很少。
FastAPI基于这些类型的提示,它们具有许多优点和好处。
但是,即使您从未使用过FastAPI,仍然可以从中学习一些好处。
请注意
如果您是Python专家,并且已经了解有关类型提示的所有知识,请跳到下一章。
动机¶让我们从一个简单的示例开始:
调用该程序以输出:
约翰·杜
该功能执行以下操作:
接受first_name和last_name。
将每个字母的第一个字母转换为大写的title()。
将它们与中间的空格相连。
编辑它。这是一个非常简单的程序。
但是现在想象一下,您是从头开始编写的。
在某个时候,您已经开始定义函数,并且参数已准备就绪...
但是然后您必须调用“将第一个字母转换为大写字母的方法”。
是上层吗? first_uppercase大写吗?大写?
然后,
您尝试与旧的程序员成为朋友,并且编辑器会自动完成。
您键入函数first_name的第一个参数,然后键入一个点(。),然后单击Ctrl + Space触发完成。
但是,可悲的是,您没有得到任何有用的信息:
添加类型¶让我们修改先前版本中的一行。
我们将从以下位置更改此片段(函数的参数):
名,姓
至:
名:str,名:str
只要。
这是“类型提示”:
这是另一回事。
我们使用冒号(:)代替等号(=)。
添加类型提示通常不会改变没有它们的情况。
但是现在,假设您正在重新创建该函数,但是带有类型提示。
同时,您尝试使用触发器自动完成,Ctrl + Space,您将看到:
这样,您可以滚动选项,直到找到“ ringing ring”选项:
功能更强大¶检查此功能,它已经具有类型提示:
因为编辑器知道变量的类型,所以您不仅可以获取完成,还可以进行错误检查:
现在您知道必须修复它,并使用以下命令将age转换为字符串str(age):
软件功能:
与NodeJS和Go相当的高性能(感谢Starlette和Pydantic)。最快的Python Web框架之一。
高效编码:将功能开发速度提高约200%至300%。 *
错误更少:导致错误的人(开发人员)减少了大约40%。 *
精明:出色的编辑器支持。它可以在任何地方自动完成,从而减少了调试时间。
旨在易于使用和学习,并且阅读文档的时间更短。
减少代码重复。通过不同的参数声明实现丰富的功能。错误更少。
产生可用级别的代码。也有自动生成的交互式文档。
标准化:基于(且完全兼容)与API相关的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。
软件特色:
FastAPI功能
FastAPI为您提供以下内容:
基于开放标准
用于API创建的OpenAPI,包括路径操作,参数,主题请求,安全性等的声明。
具有JSON模式的自动数据模型文档(因为OpenAPI本身基于JSON模式)。
经过仔细研究,围绕这些标准进行设计。不是顶部的事后观察层。
这还允许自动以多种语言生成客户端代码。
自动文件
交互式API文档和Exploration Web用户界面。由于该框架基于OpenAPI,因此有多个选项,默认情况下包括2个。
Swagger UI具有交互探索功能,您可以直接从浏览器中调用和测试您的API。
ReDoc的替代API文档。
只是现代的Python¶它们全部基于标准的Python 3.6类型声明(感谢Pydantic)。没有新的语法要学习。只是标准的现代Python。