FastAPI 教程

2.1 路由定义与 HTTP 方法装饰器

FastAPI 路由定义与 HTTP 方法装饰器入门教程 - 适合Python初学者

FastAPI 教程

本教程通过简单示例和生活化类比,详细讲解FastAPI中的路由定义和HTTP方法装饰器使用,帮助有Python基础的Web开发新手快速上手,掌握基础概念并体验成功时刻。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

路由定义与 HTTP 方法装饰器:Python 初学者的 FastAPI 入门指南

欢迎来到 FastAPI 的入门教程!如果你懂一点 Python 语法,但对 Web 开发还不太熟悉,别担心,这篇教程就是为你设计的。我们将用轻松的方式,通过动手实践来学习 FastAPI 的核心部分:路由定义和 HTTP 方法装饰器。目标是让你快速建立信心,避免枯燥理论,每一步都有简单的成功示例。

引言:用生活化类比理解路由和 HTTP 方法

想象一下你是一家快递公司:

  • 路由就像快递地址:它告诉快递员(服务器)去哪里送信(处理请求)。
  • HTTP 方法就像送信的方式:比如,GET 是查看快递单号(获取信息),POST 是寄送新包裹(发送新数据)。 在 FastAPI 中,路由定义和 HTTP 方法装饰器就是帮你设置这些地址和方式,让服务器知道如何响应不同的请求。

基础概念:快速了解关键术语

  • 路由(Route):指定一个 URL 路径,比如 / 表示主页,/items/ 表示物品列表。
  • 端点(Endpoint):路由和 HTTP 方法的组合,例如 GET / 就是一个端点。
  • HTTP 方法(HTTP Methods):常见的有 GET、POST、PUT、DELETE,用于定义操作类型。
  • 装饰器(Decorator):在 Python 中,装饰器是一种语法糖,用 @ 符号开头,用来修改函数的行为。在 FastAPI 中,装饰器用来标记函数处理特定路由和 HTTP 方法。

别担心理论,我们马上动手试试!

动手实践:从零开始创建你的第一个 FastAPI 路由

步骤 1:环境准备

假设你已经安装了 Python(建议版本 3.7+),打开终端或命令行工具,运行以下命令安装 FastAPI 和一个简单的服务器:

pip install fastapi uvicorn

这就像给快递公司配备车辆和司机,准备好送货!

步骤 2:创建第一个路由——根路由 GET /

创建一个新文件,命名为 main.py,然后输入以下代码:

from fastapi import FastAPI  # 导入 FastAPI 框架

app = FastAPI()  # 创建一个 FastAPI 应用实例,就像开张一家快递公司

@app.get("/")  # 使用装饰器定义路由:处理 GET 请求到根路径 "/"
def read_root():
    return {"message": "Hello, World!"}  # 当访问主页时,返回一个 JSON 消息

成功时刻:你刚刚定义了第一个路由!这相当于设置了一个快递地址,当有人访问网站主页时,服务器会返回“Hello, World!”。

步骤 3:运行服务器并测试

在终端中,进入 main.py 文件所在的目录,运行:

uvicorn main:app --reload

解释:

  • main:app 指定应用(main.py 文件中的 app 实例)。
  • --reload 使服务器在代码更改时自动重启,方便调试。 打开浏览器,访问 http://127.0.0.1:8000/,你应该看到 {"message": "Hello, World!"} 显示在页面上。恭喜!你的第一个 Web 应用运行起来了!

扩展示例:添加更多路由和 HTTP 方法

现在,让我们添加其他路由,就像快递公司扩展业务,处理不同类型的包裹。

示例 1:添加一个 POST 路由——处理新数据

修改 main.py,添加以下代码:

@app.post("/items/")  # 使用 @app.post 装饰器,定义处理 POST 请求到 "/items/"
def create_item(item: dict):  # 函数接收一个参数 item(假设是字典类型)
    # 在实际应用中,这里可以处理数据,比如保存到数据库
    return {"received_item": item}  # 返回收到的数据,确认成功

成功时刻:你现在有了两个端点!用类比来说,GET 是查看已有快递单(主页),POST 是寄送新包裹(提交新物品)。

示例 2:添加更多 HTTP 方法——丰富你的快递业务

继续扩展 main.py

@app.get("/items/{item_id}")  # 定义 GET 请求,带路径参数 item_id
def read_item(item_id: int):  # item_id 是整数类型的路径参数
    return {"item_id": item_id, "message": "查看指定物品"}  # 根据 ID 返回信息

@app.put("/items/{item_id}")  # 定义 PUT 请求,用于更新数据
def update_item(item_id: int, item: dict):
    return {"item_id": item_id, "updated_item": item}  # 假设更新成功

@app.delete("/items/{item_id}")  # 定义 DELETE 请求,用于删除数据
def delete_item(item_id: int):
    return {"item_id": item_id, "message": "物品已删除"}  # 假设删除成功

解释

  • {item_id} 是路径参数,在 URL 中动态变化,比如访问 /items/1 会匹配 item_id=1。
  • 用类比:GET 是查看某个快递单号,PUT 是修改包裹信息,DELETE 是取消寄送。

测试你的应用

重启服务器(如果使用 --reload,它会自动更新),然后可以用工具测试,比如:

  • 浏览器访问 http://127.0.0.1:8000/items/1 测试 GET 请求。
  • 使用 Postman 或 curl 发送 POST 请求到 http://127.0.0.1:8000/items/ 并附带 JSON 数据(例如 {"name": "book"})。 你会看到服务器正确响应,体验更多的成功时刻!

生活化类比加深理解

  • 路由:就像你家的门牌号(如 /home),快递员(请求)知道该送到哪里。
  • 装饰器:就像给包裹贴上标签(@app.get 标签表示这个是取件单)。
  • HTTP 方法:快递操作——GET(取件查看)、POST(寄送新件)、PUT(修改信息)、DELETE(取消寄送)。 通过类比,Web 开发变得直观起来!

总结与下一步

你已经学会了如何使用 FastAPI 定义路由和处理基本的 HTTP 方法。关键点:

  1. 使用 @app.get("/")@app.post("/items/") 等装饰器来定义端点。
  2. 每个装饰器对应一个函数,处理特定请求。
  3. 通过简单示例快速上手,建立了初始信心。

鼓励你:尝试修改代码,添加自己的路由和函数,比如创建一个 /about 路由返回关于页面的信息。继续探索 FastAPI 的更多功能,如路径参数、查询参数和自动文档生成。

记住,就像开快递公司一样,从简单的送货开始,慢慢扩展业务。祝你学习愉快!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包