FastAPI 教程

14.7 异步任务性能优化

FastAPI入门教程:Python初学者快速上手Web开发

FastAPI 教程

本教程面向Python初学者,通过生活化类比和简单示例,详细讲解FastAPI基础,快速上手Web开发,无需前置经验。

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

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

了解更多

FastAPI入门教程:面向Python初学者

介绍

FastAPI是一个现代的、快速的(fast)Web框架,专门用于构建API(应用程序编程接口)。如果你刚学会Python基础语法,想尝试Web开发,FastAPI是你的完美选择,因为它设计简洁、运行快速,而且学习曲线平缓。

生活化类比:想象你是一家餐厅的服务员。顾客(客户端)来点菜(发送请求),你处理订单(处理请求),然后上菜(返回响应)。FastAPI就是那个高效、友好的服务员,帮你轻松处理各种请求,让顾客满意!

快速上手:从零开始运行你的第一个API

步骤1:安装FastAPI和服务器

在终端或命令行中,运行以下命令来安装FastAPI和一个服务器(Uvicorn):

pip install fastapi uvicorn

解释:FastAPI是框架本身,Uvicorn是用于运行FastAPI应用的服务器。这就好比买了一把好刀(FastAPI)和一个厨房(Uvicorn),准备做菜!

步骤2:创建第一个API文件

创建一个新文件,比如命名为 main.py,并用文本编辑器打开它。然后,复制粘贴以下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

成功时刻:看,你刚刚定义了一个API端点!这段代码创建了一个应用(app),并指定当有人访问根路径(/)时,返回一个简单的JSON响应 {"Hello": "World"}。这就像设置了餐厅的欢迎标语,客人一来就能看到。

步骤3:运行你的API

在终端中,导航到 main.py 所在的目录,运行以下命令:

uvicorn main:app --reload
  • main:app 指的是 main.py 文件中的 app 对象。
  • --reload 参数让服务器在代码更改时自动重启,非常方便调试。

运行后,你会看到类似这样的输出,表示服务器已启动:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

成功时刻:现在,打开你的浏览器,访问 http://127.0.0.1:8000。你会立刻看到 {"Hello": "World"} 显示在页面上!恭喜,你的第一个API已经成功运行了!这就像开张第一天就有顾客上门,感觉棒极了。

添加更多功能:让API变得更实用

路径参数:根据ID获取特定内容

路径参数让你能处理动态URL,比如根据菜单ID获取菜单详情。

main.py 中添加以下代码:

@app.get("/menu/{menu_id}")
def read_menu(menu_id: int):
    return {"menu_id": menu_id, "name": "Special Pizza"}

生活化类比:菜单ID就像是餐厅菜单的编号,每个编号对应一个特定的菜单项。FastAPI自动提取URL中的数字,并把它作为 menu_id 参数传递给你的函数。

测试:保存文件后(服务器会自动重启),在浏览器访问 http://127.0.0.1:8000/menu/1,你会看到 {"menu_id": 1, "name": "Special Pizza"}。试试改成其他数字,比如 http://127.0.0.1:8000/menu/42,FastAPI会智能地处理它!

查询参数:添加可选的自定义选项

查询参数用于在URL中传递额外信息,比如分页或过滤选项。

main.py 中添加:

@app.get("/items/")
def read_items(skip: int = 0, limit: int = 10):
    return {"skip": skip, "limit": limit}

解释skiplimit 是查询参数,有默认值。用户可以在URL中添加 ?skip=2&limit=5 来覆盖默认值。

测试:访问 http://127.0.0.1:8000/items/,你会看到 {"skip": 0, "limit": 10}。然后尝试 http://127.0.0.1:8000/items/?skip=2&limit=5,响应变成 {"skip": 2, "limit": 5}。这就像顾客点菜时说:“我要跳过前两个,只要后五个菜”,FastAPI轻松理解!

POST请求和请求体:接收和发送数据

POST请求常用于创建新资源,比如提交一个订单。

首先,导入 pydantic 来定义数据模型(这有助于自动验证数据):

from pydantic import BaseModel

class Order(BaseModel):
    item_name: str
    quantity: int

然后,添加POST端点:

@app.post("/orders/")
def create_order(order: Order):
    return {"order_received": order.item_name, "quantity": order.quantity}

生活化类比Order 模型定义了订单的结构,就像餐厅的点菜单,需要填写菜名和数量。POST请求就像顾客递上填写好的点菜单,FastAPI会检查菜单是否填写正确(数据验证),然后处理。

测试:由于浏览器通常只支持GET请求,你可以使用简单工具如 Postman 或命令行工具 curl。例如,用 curl 发送POST请求:

curl -X POST "http://127.0.0.1:8000/orders/" -H "Content-Type: application/json" -d '{"item_name":"Pizza","quantity":2}'

你会收到响应:{"order_received":"Pizza","quantity":2}。如果发送无效数据(如缺少字段),FastAPI会自动返回错误信息,帮你调试!

额外成功时刻:自动交互式文档

FastAPI自带自动生成的文档,让你无需额外工具就能测试API。

在浏览器访问 http://127.0.0.1:8000/docs,你会看到一个漂亮的交互式界面(基于Swagger UI)。这里列出了你所有的API端点,你可以直接点击尝试发送请求,看到实时响应!这就像餐厅有了智能点菜系统,顾客可以自己浏览和下单。

总结和下一步建议

通过这个教程,你已经学会了FastAPI的核心基础:

  • 安装和运行FastAPI应用。
  • 创建简单的GET和POST端点。
  • 使用路径参数和查询参数处理动态请求。
  • 利用Pydantic模型验证请求数据。

建立信心:每个步骤都有即时反馈,让你感受到“哇,我做到了!”的成功时刻。FastAPI的设计让Web开发变得直观有趣。

建议练习:为了巩固知识,尝试创建一个简单的待办事项API:

  • GET /todos/ 返回所有待办事项列表。
  • POST /todos/ 添加新待办事项。
  • 使用路径参数如 /todos/{todo_id} 获取或删除特定事项。

保持探索精神,FastAPI还有更多高级功能如依赖注入、异步支持等,等你来解锁。祝你学习愉快,快速成为Web开发高手!

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

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

获取工具包