关于python:通过-Python-FastAPI-开发一个快速的-Web-API-项目

3次阅读

共计 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 标准 (中文版)
正文完
 0