Python FastAPI 速成课程

2025-05-24

Python FastAPI 速成课程

这里有一个速成课程(系列文章),可让您使用 FastAPI 在 Python 中创建 API。

我将大约每两天发布一篇新文章,逐渐地你将了解有关 FastAPI 的所有知识

为了不错过任何内容,请在 Twitter 上关注我:https://twitter.com/EricTheCoder_


什么是 FastAPI?

FastAPI 是一个 Python Web 框架,可让您快速构建高性能 API。

为什么选择 FastAPI?

在 FastAPI 之前,已经有多种使用 Python 创建 API 的方法。尤其是 Django Rest Framework 和 Flask。那么,为什么选择 FastAPI 呢?

以下是 FastAPI 的主要优点列表:

  • 非常快:性能优于Django和Flask,甚至可以与NodeJS和GO的性能相媲美
  • 快速编码:构建 API 的速度提高 2-3 倍
  • 简单:易于使用和学习
  • 类型注释(类型提示):方便验证,允许自动完成并方便调试
  • 自动文档:FastAPI 自动生成 Swagger UI 和 ReDoc 格式的文档。

先决条件

要开始使用 FastAPI 进行编码,您必须具备 Python 语言的基本编程知识。

您还应该确保您拥有更新版本的 Python(版本 3.6 或以上)

从终端输入此命令来找出您的机器上安装的 Python 版本。

$ python --version

or

$ python3 --version
Enter fullscreen mode Exit fullscreen mode

如果你没有Python或者没有低于3.6的版本,你可以从官网获取最新版本的Python:https://www.python.org/downloads/

代码编辑器

在本教程中,我将使用 Visual Studio Code:https://code.visualstudio.com/

使用此编辑器您可以更轻松地跟进我,但这实际上不是必需的。

最后,如果您使用的是 vscode,请确保已安装 Python 扩展。

创建虚拟环境

在处理 Python 项目时,我们必须使用多个库,例如 FastAPI、Flask 或 Django 等。

根据项目创建日期。例如,FastAPI 库在其他项目中的版本号可能不完全相同。

如何让每个项目都有自己的 Python 版本和自己的库版本?

我们将使用虚拟环境。

虚拟环境允许您在文件夹/项目中安装 Python 和 Python 库,而不会影响其他文件夹/项目。

Python 为您提供了一个允许您创建虚拟环境的系统。

一旦创建并激活了环境,所有安装的库只能在其所属的环境中使用。

如何创建虚拟环境

通常我们将虚拟环境放在项目文件夹中。

为我们的项目创建并访问一个文件夹

$ mkdir fastapi-demo
$ cd fastapi-demo
Enter fullscreen mode Exit fullscreen mode

从此文件夹中,您现在可以创建将附加到项目的虚拟环境

$ python3 -m venv env
Enter fullscreen mode Exit fullscreen mode

在这里我们使用模块选项 venv 启动 python3。env 是我们给虚拟环境起的名字。

一旦创建了虚拟环境,您就可以激活它:

MacOS / Linux

$ source env/bin/activate
Enter fullscreen mode Exit fullscreen mode

视窗

$ env\Scripts\activate.bat
Enter fullscreen mode Exit fullscreen mode

就这样!现在你已经为你的项目创建了一个 Python 虚拟环境。通常,终端会通过显示环境名称来告知你环境已激活。

请注意,要停用虚拟环境,您必须运行

$ deactivate
Enter fullscreen mode Exit fullscreen mode

对于本教程的其余部分,请确保在终端中运行任何命令之前已启用虚拟环境。

安装 FastAPI

从 fastapi-demo 文件夹并启用虚拟环境后,运行以下安装命令:

$ pip install "fastapi[all]"
Enter fullscreen mode Exit fullscreen mode

此命令将安装 FastAPI,并安装一些可选依赖项(如本地服务器(uvicorn))以在您的机器上测试 FastAPi。

安装这些库后,您可以在当前文件夹中启动打开的代码编辑器

$ code .
Enter fullscreen mode Exit fullscreen mode

此命令将在当前文件夹中启动 Visual Studio Code

提醒:什么是 API?

API 代表应用程序编程接口。

简而言之,它是一个可以被另一个程序使用的程序,以允许应用程序相互通信。

API 允许服务器和客户端相互通信并交换信息和数据。交换的数据采用结构化文本格式 (JSON)。

交换以请求和响应的形式进行:!替代文本

例如,浏览器(客户端/前端应用程序)向服务器发出特定请求:

GET www.example.com/products/3814
Enter fullscreen mode Exit fullscreen mode

服务器知道如何处理这个请求吗?它不知道。它不知道如何处理这个请求。

这就是我们需要创建 API 的原因。这是一个服务器应用程序,它将决定如何响应针对特定资源的各种请求。

让我们回到最后一个例子查询:

GET www.example.com/products/3814
Enter fullscreen mode Exit fullscreen mode

客户希望获取产品编号3814的信息

为了响应此请求,我们可以创建一个 API,在数据库中搜索 3814 产品,并以结构化文本 (JSON) 格式将此响应返回给客户。

{
  "id": 3814,
  "name": "iPhone 12",
  "qty": 29,
  "price": 799
}
Enter fullscreen mode Exit fullscreen mode

不同类型的请求

请注意,所有对服务器的请求都是通过 HTTP 操作发出的。

以下是最常用的 HTTP 操作

GET:GET 请求仅用于检索数据。

POST:POST 请求用于发送数据。

PUT:PUT 请求用于修改数据。

PATCH:PATCH 请求用于部分修改数据。

DELETE:DELETE 请求用于删除指定的数据。

当我们处理资源时,例如产品。产品资源上的每个操作都有自己的路由

以下是每个 HTTP 操作的示例路由:

创建:POST www.example.com/

阅读:GET www.example.com/products/3814

更新:PUT www.example.com/products/3814

销毁:删除 www.example.com/products/3814

这些路线的命名方式并非偶然,事实上这是大多数开发人员遵循的惯例。

您的第一个 API

理论已经结束,现在让我们看看如何创建你的第一个 API

从代码编辑器创建一个名为:first-api.py 的文件

输入此代码

from fastapi import FastAPI

app = FastAPI()

@app.get("/home")
def index():
    return {"message": "Hello World"}
Enter fullscreen mode Exit fullscreen mode

app = FastAPI() 允许创建 FastAPI 实例

@app.get() 装饰器允许我们指定 url 路径和 api 的 HTTP(GET)操作。

每次用户访问由 @app.get() 装饰器指定的 URL 路径时,都会执行 index() 函数,在本例中为“/home”路径

请注意,“index()”函数的名称可以是任何名称。这取决于您的喜好。

要启动服务器并测试您的第一个 API,请在终端中输入

$ uvicorn first-api:app --reload
Enter fullscreen mode Exit fullscreen mode

uvicorn 是本地服务器。它以文件名作为参数:FastAPI 实例的名称

每次修改源文件时,—reload 选项都会重新启动服务器。

因此您可以访问:http://127.0.0.1: 8000/home

将显示以下响应:

{
  "message": "Hello World"
}
Enter fullscreen mode Exit fullscreen mode

做得好!你刚刚创建了你的第一个 API

最后一点。您创建的路径指向“ http://127.0.0.1:8000/home ”。如何让它指向“根路径”,也就是“ http://127.0.0.1:8000 ”?

只能使用反斜杠“/”

@app.get("/")
Enter fullscreen mode Exit fullscreen mode

单独使用反斜杠表示“根路径”

结论

今天就到这里,请在推特上关注我:https://twitter.com/EricTheCoder_以便收到下一篇文章发布的通知(两天内)。

文章来源:https://dev.to/ericchapman/python-fastapi-crash-course-533e
PREV
成为全栈开发人员的极简路线图
NEXT
PHP 备忘单(已更新至 PHP 8.1)