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
如果你没有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
从此文件夹中,您现在可以创建将附加到项目的虚拟环境
$ python3 -m venv env
在这里我们使用模块选项 venv 启动 python3。env 是我们给虚拟环境起的名字。
一旦创建了虚拟环境,您就可以激活它:
MacOS / Linux
$ source env/bin/activate
视窗
$ env\Scripts\activate.bat
就这样!现在你已经为你的项目创建了一个 Python 虚拟环境。通常,终端会通过显示环境名称来告知你环境已激活。
请注意,要停用虚拟环境,您必须运行
$ deactivate
对于本教程的其余部分,请确保在终端中运行任何命令之前已启用虚拟环境。
安装 FastAPI
从 fastapi-demo 文件夹并启用虚拟环境后,运行以下安装命令:
$ pip install "fastapi[all]"
此命令将安装 FastAPI,并安装一些可选依赖项(如本地服务器(uvicorn))以在您的机器上测试 FastAPi。
安装这些库后,您可以在当前文件夹中启动打开的代码编辑器
$ code .
此命令将在当前文件夹中启动 Visual Studio Code
提醒:什么是 API?
API 代表应用程序编程接口。
简而言之,它是一个可以被另一个程序使用的程序,以允许应用程序相互通信。
API 允许服务器和客户端相互通信并交换信息和数据。交换的数据采用结构化文本格式 (JSON)。
例如,浏览器(客户端/前端应用程序)向服务器发出特定请求:
GET www.example.com/products/3814
服务器知道如何处理这个请求吗?它不知道。它不知道如何处理这个请求。
这就是我们需要创建 API 的原因。这是一个服务器应用程序,它将决定如何响应针对特定资源的各种请求。
让我们回到最后一个例子查询:
GET www.example.com/products/3814
客户希望获取产品编号3814的信息
为了响应此请求,我们可以创建一个 API,在数据库中搜索 3814 产品,并以结构化文本 (JSON) 格式将此响应返回给客户。
{
"id": 3814,
"name": "iPhone 12",
"qty": 29,
"price": 799
}
不同类型的请求
请注意,所有对服务器的请求都是通过 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"}
app = FastAPI() 允许创建 FastAPI 实例
@app.get() 装饰器允许我们指定 url 路径和 api 的 HTTP(GET)操作。
每次用户访问由 @app.get() 装饰器指定的 URL 路径时,都会执行 index() 函数,在本例中为“/home”路径
请注意,“index()”函数的名称可以是任何名称。这取决于您的喜好。
要启动服务器并测试您的第一个 API,请在终端中输入
$ uvicorn first-api:app --reload
uvicorn 是本地服务器。它以文件名作为参数:FastAPI 实例的名称
每次修改源文件时,—reload 选项都会重新启动服务器。
因此您可以访问:http://127.0.0.1: 8000/home
将显示以下响应:
{
"message": "Hello World"
}
做得好!你刚刚创建了你的第一个 API
最后一点。您创建的路径指向“ http://127.0.0.1:8000/home ”。如何让它指向“根路径”,也就是“ http://127.0.0.1:8000 ”?
只能使用反斜杠“/”
@app.get("/")
单独使用反斜杠表示“根路径”
结论
今天就到这里,请在推特上关注我:https://twitter.com/EricTheCoder_以便收到下一篇文章发布的通知(两天内)。
文章来源:https://dev.to/ericchapman/python-fastapi-crash-course-533e