| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 最快的Pythonweb框架之一:FastAPI 初探 -> 正文阅读 |
|
[Python知识库]最快的Pythonweb框架之一:FastAPI 初探 |
最快的Pythonweb框架之一:FastAPI 初探希望和大家一起来学习FastAPI 异步 web框架,记录一下,当做笔记。 文档资源:官网:https://fastapi.tiangolo.com/ 中文官网:https://fastapi.tiangolo.com/zh/ 项目地址:https://github.com/tiangolo/fastapi 简介:FastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+ 版本,并基于Python标准库(typing库)提供的类型提示(type hints)。 项目遵循 MIT 许可协议。 其关键特性包括:
FastAPI目前已经被许多公司用于生产环境,其中包括微软、Uber、Netflix等。
Typer,命令行中的FastAPI:typer:https://typer.tiangolo.com/ 是一个用于开发 CLI 命令行应用的框架,是FastAPI的小同胞。 安装FastAPI:安装命令:
同时,还需要一个ASGI 服务器(类比uWSGI、gunicorn等WSGI服务器), 生产环境可以使用 Uvicorn 或者 Hypercorn:
依赖:
可选依赖:用于 Pydantic:
用于 Starlette:
用于 FastAPI / Starlette:
你可以通过 示例代码:快速构建RESTful API及其可交互文档1. 创建应用程序:创建一个 main.py 文件,并写入以下内容:
可见FastAPI的使用和Flask非常像,都是显式地创建程序对象app,并使用装饰器规定路由。 如果你的代码中会用到
如果你不知道是否会用到 async/await,可以查看文档的 In a hurry?中的async和await部分。 2. 运行程序:在 其中:
其他更多参数可以使用 3. 检查:在浏览器中访问:http://127.0.0.1:8000/items/5?q=somequery 将会看到FastAPi应用返回的json响应:
现在我们已经创建了一个具有以下功能的 API:
4. 交互式API文档:在应用运行时,访问 http://127.0.0.1:8000/docs 可以看到自动由Swagger UI 生成的交互式API文档。 也可以通过访问 http://127.0.0.1:8000/redoc 查看有ReDoc自动生成的API文档。 通过交互式API文档可以对API接口进行调用测试,查看返回的结果是否符合预期,同时还适合前后端分离开发时为前端开发人员提供模拟的API接口使用。 5. 示例升级:修改 这里借助Pydantic来使用标准的Python类型声明请求体。
修改代码后,因为我们启动Uvicorn是使用了 现在在交互式API文档中就可以看到新添加的 点击 “Try it out”之后可以填写参数并直接调用API。 点击"Execute", 界面就会向后端发送请求,并将结果显示。 同样的ReDoc也可以看到新添加的 在上面示例中当请求到来时,FastAPI 将会:
总结:总的来说,我们就像声明函数的参数类型一样只声明了一次请求参数、请求体等数据的类型。 你使用了标准的现代 Python 类型来完成声明。 你不需要去学习新的语法、了解特定库的方法或类,等等。 只需要使用标准的 Python 3.6 及更高版本。 举个例子,比如声明
或者一个更复杂的
…在进行一次声明之后,你将获得:
在接下来的文档教程和用户指南中的内容有:
性能:独立机构 TechEmpower 所作的基准测试结果显示,基于 Uvicorn 运行的 FastAPI 程序是 最快的 Python web 框架之一,仅次于 Starlette 和 Uvicorn 本身(FastAPI 内部使用了它们)。 想了解更多,请查阅 基准测试 章节。 安全性及身份验证:FastAPI集成了安全性和身份认证特性。杜绝数据库或者数据模型的渗透风险。 在OpenAPI规范中,定义的安全模式包括以下几种:
以及Starlette提供的各种安全特性,包括session和cookies。 所有的这些都是可复用的工具和组件,可以轻松与你的系统,数据仓库,关系型以及 NoSQL 数据库等等集成。 依赖注入:FastAPI有一个使用非常简单,但非常强大的依赖注入(也称为components、resources、services、providers)系统。
不限制插件: 换句话说,如果你不需要FastAPI提供的某些功能,你可以自己导入并使用你想用的代码。 任何集成都被设计得非常容易使用(使用依赖项) ,以至于您可以使用与路径操作相同的结构和语法,用2行代码为应用程序创建一个“插件”。 Starlette 特性:FastAPI基于并完全兼容Starlette。所以,你现有的其他Starlette代码也可以正常运行。FastAPI实际上是Starlette的一个子类。所以,如果你已经直到或者使用过Starlette,大部分功能会以同样的方法工作。 通过FastAPI,你可以获得所有Starlette的特性(FastAPI就像加强版的Starlette):
Pydantic 特性:FastAPI基于并完全兼容Pydantic。所以,你现有的其他Pydantic代码也可以正常运行。 同时还兼容基于Pydantic的外部库,如用于数据库的 ORMs(对象关系映射),ODMs(对象文档映射)。 这也意味着,很多情况下,你也可以将从数据库中获取的对象直接传到客户端。 通过FastAPI,你可以获得所有Pydantic的特性(FastAPI基于Pydantic做了所有的数据处理工作):
FastAPI的基本介绍到此为止,之后我们将复习一遍在FastAPI中至关重要的Python3.6及之后提供的 类型提示(type hints) 功能。 To be Continue… |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:57:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |