持续创作,加快成长!这是我参与「日新计划 10 月更文应战」的第 31 天,点击查看活动详情

前语

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 将对你有好处。

通过 Python FastAPI 开发一个快速的 Web API 项目

文档:fastapi.tiangolo.com

源码:github.com/tiangolo/fa…

从官方文档来看,FastAPI 具有如下几个关键特性:

  • 快速:可与NodeJSGo比肩的极高性能(归功于 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

如下图:

通过 Python FastAPI 开发一个快速的 Web API 项目

开始 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 ,这看起来应该非常了解。

通过 Python FastAPI 开发一个快速的 Web API 项目

  • 路由 @app.get('/'): 它告诉 FastAPI,当用户恳求根/ 路径时,应该运转以下办法。

  • 办法界说 async def root() : 注意这个异步界说,这个办法将作为一个 Python3 协程 运转。假如你想了解更多关于并发性和 async 的信息,FastAPI 官方文档对其有一个很好的解释,以及是什么让 FastAPI 结构变得如此快速。

最后是回来语句,咱们将数据发送到浏览器。

    return {'message': 'Hello World!'}

正如你所期望的,拜访这个端点将回来一个与上述字典相匹配的 JSON 呼应数据。

最后,说得够多了,运转服务器看看它的运转状况吧!

uvicorn main:app --reload

发动成功如图所示:

通过 Python FastAPI 开发一个快速的 Web API 项目

uvicorn main:app命令含义如下:

  • mainmain.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 文档:

通过 Python FastAPI 开发一个快速的 Web API 项目

本结构还供给了一个可选的 API 文档,在浏览器运转 http://127.0.0.1:8000/redoc,能够看到如下由 ReDoc主动生成的文档,如图:

通过 Python FastAPI 开发一个快速的 Web API 项目

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 标准 (中文版)