Python REST API 教程:FastAPI 入门

2025-06-04

Python REST API 教程:FastAPI 入门

REST API 是一种用于创建 Web 服务的架构模式。REST 是一组规则,概述了在客户端和服务器之间共享数据的最佳实践。它们使用 HTTP 请求来操作数据并与 Web 服务通信。REST API 具有无状态、可缓存和一致性的特点。它们非常适合构建通用且可扩展的 Web 应用程序。三大主流 Python 框架分别是 Django、Flask 和 FastAPI。

今天,我们将探索 FastAPI,一个用于使用 Python 构建 API 的开源 Web 框架。

让我们开始吧!

我们将介绍

什么是 FastAPI?

FastAPI 官方网站将 FastAPI 描述为一个基于标准 Python 类型提示,使用 Python 3.6+ 构建 API 的现代高性能 Web 框架。FastAPI 非常快,因为它开箱即用地支持asyncPython 3.6+ 的功能。

FastAPI 于 2018 年发布,由 Sebastián Ramírez 创建。Ramírez 对 Flask 和 DRF 等现有框架不满意,因此他使用 Starlette 和 Pydantic 等工具创建了自己的框架。现在,许多大型科技公司,例如 Uber、Netflix 和 Microsoft,都在使用 FastAPI 构建他们的应用程序。

FastAPI 功能

FastAPI 有很多很棒的功能。我们来看看:

  • 高性能:顾名思义,FastAPI速度很快。它被认为是目前最快的 Python 框架之一。

  • 强大:您可以使用自动交互式文档创建可用于生产的代码。

  • 直观:FastAPI 的设计旨在易于使用和学习。它提供了出色的编辑器支持和文档。

  • 快速编码:FastAPI 可将您的开发速度提高 200%-300%。

  • 更少的虫子:它减少了约 40% 的诱发虫子。

  • 兼容性:它与 APIS、OpenAPI(以前称为 Swagger)和 JSON 模式的开放标准配合良好。

  • 插件:您可以使用依赖注入轻松创建插件。

  • 类型提示:您可以使用类型提示进行数据验证和转换。

Flask 与 FastAPI

在本节中,我们将探索 Flask 和 FastAPI。我们将讨论它们的优点、缺点和用例。

烧瓶

Flask 是一个Python 微框架。它自带 ORM、缓存和身份验证功能。它旨在使用 Python 构建 Web 应用程序。它被认为简单、快速且可扩展。

优点

  • 灵活:您可以操作 Flask 的大多数方面。

  • 直观:Flask 因其简单性而非常适合初学者。

  • 内置开发服务器:此内置功能及其集成支持允许进行无缝单元测试。

缺点

  • 没有数据验证:使用 Flask,你可以传递任何数据类型。这可能会导致程序经常崩溃。

  • 时间:它有一个单一来源,轮流处理请求,这意味着处理请求可能需要一些时间。

用例

Flask 通常用于以下项目:

  • 电子商务系统
  • 社交媒体机器人
  • 社交网络
  • 静态网站

快速API

FastAPI 是一个现代的高性能 Web 框架,用于构建 Web API。

优点

  • 数据验证:即使在嵌套的 JSON 请求中,它也会验证您的数据类型。

  • 异常处理:使用 FastAPI,可以轻松进行异常处理。

  • 异步代码支持:它支持使用async/awaitPython 关键字的异步代码。

缺点

  • 请求验证:FastAPI 使用 Pydantic 进行请求验证。此过程并不总是很直观,有时需要您编写自己的自定义验证器。

  • 社区较小:由于该框架仍然很新,因此与其他框架相比,其社区较小。

用例

FastAPI 通常用于以下项目:

  • 内部危机管理
  • 部署机器学习模型
  • 为 Web 应用程序创建帐户、登录名和身份验证

FastAPI 你好世界

让我们开始使用 FastAPI 练习吧!我们先来看一个简单的例子Hello World!,然后逐一分解。

from fastapi import FastAPI

app = FastAPI()

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

要启动服务器,我们需要运行以下命令:

uvicorn main:app --reload
Enter fullscreen mode Exit fullscreen mode

让我们来分析一下:

  • main: 指的是文件名
  • appFastAPI:指的是在 hello.py 文件里面创建的对象
  • --reload:代码更改后使服务器重新启动的参数

让我们分解一下Hello World!代码:

  • 第 1 行:我们导入FastAPI,这是一个提供 API 的所有功能的 Python 类。

  • 第 3 行:我们创建该类的一个实例FastAPI并将其命名为app。这就是上述命令中app引用的。uvicorn

  • 第 5 行:我们创建一条GET路径。

  • 第 6 行:我们定义了每当有人访问上述路径时执行的函数。

  • 第 7 行:每当访问该路线时,我们都会向客户端返回响应。

基本 FastAPI 构建块

让我们探索 FastAPI 的一些组成部分,包括路径参数、查询参数和请求主体。

路径参数

路径参数有助于将 API 调用范围缩小到单个资源,这意味着您不必为像资源查找器这样简单的东西构建主体。

这些参数括在花括号中{},它们为您提供了一种控制特定资源表示的方法。它们位于查询字符串之前和端点路径内。

让我们看看如何使用它们:

from fastapi import FastAPI

app = FastAPI()

@app.get("/courses/{course_name}")
def read_course(course_name):
  return {"course_name": course_name}
Enter fullscreen mode Exit fullscreen mode

路径参数的值将作为参数course_name传递给函数read_couse()course_name

查询参数

查询参数是可选的。在 FastAPI 中,未声明为路径参数一部分的函数参数将被自动解释为查询参数。

让我们看一些示例代码:

from fastapi import FastAPI

app = FastAPI()

course_items = [{"course_name": "Python"}, {"course_name": "SQLAlchemy"}, {"course_name": "NodeJS"}]

@app.get("/courses/")
def read_courses(start: int, end: int):
    return course_items[start : start + end]
Enter fullscreen mode Exit fullscreen mode

查询是URL 中问号后面的一组键值对,以 &符号分隔?&

看一下以下网址:

http://localhost:8000/courses/?start=0&end=10

其查询参数为:

start其值为0end其值为10

在代码的第 8 行,我们传递了 API 所需的两个查询参数。

请求正文

请求主体是客户端发送到 API 的数据。要在 FastAPI 中声明一个,我们可以使用 Pydantic 模型。

让我们看一个例子来了解如何做到这一点:

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel

class Course(BaseModel):
    name: str
    description: Optional[str] = None
    price: int
    author: Optional[str] = None

app = FastAPI()

@app.post(“/courses/”)
def create_course(course: Course):
    return course
Enter fullscreen mode Exit fullscreen mode

让我们来分析一下:

  • 第 1-3 行:我们导入所需的包。

  • 第 5 行:我们声明请求数据模型。

  • 第 11 行:我们创建FastAPI该类的一个实例。

  • 第 13 行:我们创建一条POST路径。

  • 第 14 行:我们将请求数据模型添加到路径中。

下一步要学什么

恭喜您迈出了 FastAPI 的第一步!FastAPI 是一个轻量级的 Python Web 框架。它允许您轻松、快速、高效地构建 API。如果您对 Web 应用程序开发感兴趣,学习 FastAPI 将使您领先一步。为了更好地掌握该框架,我们建议您深入研究并参与一些项目。

接下来建议讨论的一些主题是:

  • 并行处理
  • 使用 GitHub 将 API 部署到云
  • 默认和可选参数
  • ETC。

要开始学习这些概念及更多内容,请查看 Educative 的课程《使用 Python 构建 REST API 并将其部署到 Microsoft Azure》。在本课程中,您将学习如何使用 FastAPI 在 Python 中构建 REST API,并将其部署到 Microsoft Azure。最终,您将能够将 FastAPI 实现到您自己的项目中。

学习愉快!

继续阅读有关 Python 和 API 的内容

文章来源:https://dev.to/educative/python-rest-api-tutorial-getting-started-with-fastapi-2gae
PREV
使用 React 时应避免的十大错误
NEXT
如何学习 C++:初学者完整指南 1. C++ 简史 2. C++ 工具和软件概述 3. C++ 语言和语法简介 C++ 术语和词汇 4. C++ 常见问题解答 5. C++ 初学者资源