共计 3200 个字符,预计需要花费 8 分钟才能阅读完成。
前言
Python 如此受欢迎的泛滥起因之一是 Python 有大量成熟和稳固的库可供选择:
- 网页开发有:Django 和 Flask,提供了很好的网络开发体验和大量的有用文档
- 机器学习有:scikit-learn、Keras 等,提供了丰盛的机器学习的包和数据处理和可视化工具。
FastAPI 是一个疾速、轻量级的古代 API,与其余基于 Python 的 Web 框架(如 Flask 和 Django)相比,有一个更容易的学习曲线。FastAPI 绝对较新,但它有一个一直增长的社区。它被宽泛地用于构建网络 API 和部署机器学习模型。
正是因为大量的库和框架保障了 Python 领有良好的开发速度和便利性,使 Python、Go 和 Rust 这样的新语言可能并驾齐驱,博得大量的开发者的青睐。
什么是 FastAPI ?
FastAPI 是一个用于开发网络 API 的新的 Python 框架,在过来几年中失去了遍及。如果你打算应用 Python 进行 Web 开发,相熟 FastAPI 将对你有益处。
文档:https://fastapi.tiangolo.com
源码:GitHub – tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production
从官网文档来看,FastAPI 具备如下几个要害个性:
- 疾速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
- 高效编码:进步性能开发速度约 200% 至 300%。*
- 更少 bug:缩小约 40% 的人为(开发者)导致谬误。*
- 智能:极佳的编辑器反对。处处皆可主动补全,缩小调试工夫。
- 简略:设计的易于应用和学习,浏览文档的工夫更短。
- 简短:使代码反复最小化。通过不同的参数申明实现丰盛性能。bug 更少。
- 强壮:生产可用级别的代码。还有主动生成的交互式文档。
- 标准化:基于(并齐全兼容)API 的相干凋谢规范:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
装置 FastAPI
python -m pip install fastapi uvicorn[standard]
有了这些,你曾经装置了 FastAPI 和 Uvicorn,并筹备学习如何应用它们。FastAPI 是你用来建设你的 API 的框架,而 Uvicorn 是应用你建设的 API 来服务申请的服务器。
创立虚拟环境和新建我的项目
首先,在 Python 我的项目中创立一个新的文件夹,而后创立一个新的虚拟环境:
mkdir fastwebprojects
cd fastwebprojectsls
python3 -m venv env/
这将确保咱们装置的 Python 包与我的项目放弃隔离。
激活虚拟环境
source env/bin/activate
当初你能够装置 FastAPI 和 uvicorn,一个 ASGI 服务器。
pip install fastapi uvicorn
如下图:
开始 HelloWorld 我的项目
在深入研究 Web 我的项目如何开发之前,咱们能够在 FastAPI 中建设并运行传统的 “Hello World “ 应用程序。这能够证实咱们的初始设置是失常工作的。
关上 Vim 或其余的 Python 编辑器,把上面的代码粘贴到一个叫做 main.py 的文件中。写入如下代码:
from fastapi import FastAPI # 1. 导入 FastAPI
app = FastAPI() # 2. 创立一个 FastAPI 实例
@app.get('/') # 3. 创立一个门路操作
async def root(): # 4. 定义门路操作函数
return {'message': 'Hello World!'} # 5. 返回内容
这五行代码中,你曾经创立了一个工作的 API。如果你已经应用过 Flask,这看起来应该十分相熟。
- 路由 @app.get(‘/’): 它通知 FastAPI,当用户申请根 / 门路时,应该运行以下办法。
- 办法定义 async def root() : 留神这个异步定义,这个办法将作为一个 Python3 协程 运行。如果你想理解更多对于并发性和 async 的信息,FastAPI 官网文档对其有一个很好的解释,以及是什么让 FastAPI 框架变得如此疾速。
最初是返回语句,咱们将数据发送到浏览器。
return {'message': 'Hello World!'}
正如你所冀望的,拜访这个端点将返回一个与上述字典相匹配的 JSON 响应数据。
最初,说得够多了,运行服务器看看它的运行状况吧!
uvicorn main:app --reload
启动胜利如图所示:
uvicorn main:app
命令含意如下:
main
:main.py 文件(一个 Python「模块」)。app
:在 main.py 文件中通过 app = FastAPI() 创立的对象。--reload
:让服务器在更新代码后重新启动。仅在开发时应用该选项。
在输入中,会有一行信息像上面这样:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
该行显示了你的利用在本机所提供服务的 URL 地址。
说了这么多,咱们关上浏览器拜访 http://127.0.0.1:8000,能够看到如下的 JSON 响应:
{"message": "Hello World!"}
也能够运行 http://127.0.0.1:8000/docs
,运行这个服务器文档,能够看到基于 Swagger UI 主动生成的交互式 API 文档:
本框架还提供了一个可选的 API 文档,在浏览器运行 http://127.0.0.1:8000/redoc,能够看到如下由 ReDoc 主动生成的文档,如图:
OpenAPI
OpenAPI 标准(以前称为 Swagger 标准)是用于形容,生成,应用和可视化 RESTful Web 服务的机器可读接口文件的标准。
FastAPI 应用定义 API 的 OpenAPI 规范将你的所有 API 转换成 模式 (schema)。
模式
模式是对事物的一种定义或形容。它并非具体的实现代码,而只是形象的形容。
API 模式
在这种场景下,OpenAPI 是一种规定如何定义 API 模式的标准。定义的 OpenAPI 模式将包含你的 API 门路,以及它们可能应用的参数等等。
数据模式
模式这个术语也可能指的是某些数据比方 JSON 的构造。在这种状况下,它能够示意 JSON 的属性及其具备的数据类型,等等。
OpenAPI 和 JSON Schema
OpenAPI 为你的 API 定义 API 模式。该模式中蕴含了你的 API 发送和接管的数据的定义(或称为 Schema,模式),这些定义通过 JSON 数据模式规范 JSON Schema 所生成。
FastAPI 中 OpenAPI 的用处
驱动 FastAPI 内置的 2 个交互式文档零碎的正是 OpenAPI 模式。
并且还有数十种代替计划,它们全副都基于 OpenAPI。你能够轻松地将这些代替计划中的任何一种增加到应用 FastAPI 构建的应用程序中。
你还能够应用它主动生成与你的 API 进行通信的客户端代码。例如 web 前端,挪动端或物联网嵌入程序。
总结
本文介绍了 Python 中 FastAPI 这一框架,并利用其建设了一个疾速的 HelloWorld 我的项目 API,最初介绍了对于 OpenAPI 的标准和其在 FastAPI 中的作用。心愿能引入 Python 爱好者对这一框架的学习。
心愿本文能对你有所帮忙,如果喜爱本文,能够点个赞或者关注,非常感激!
这里是宇宙之一粟,下一篇文章见!
宇宙古今无有穷期,毕生不过顷刻,当思奋争。
灵感起源:
- FastAPI-First Steps
- Python FastAPI Tutorial
- Using FastAPI to Build Python Web APIs
- The OpenAPI Specification Repository
- OpenAPI 标准 (中文版)