FastAPI 教程

12.6 WebSocket 测试

Python初学者FastAPI入门教程:从零开始学习WebSocket实时通信

FastAPI 教程

面向有基础Python语法知识但无Web开发经验的初学者,本教程详细介绍如何使用FastAPI快速构建API和实现WebSocket功能,通过简单易懂的类比和动手实践示例,帮助您建立信心并快速上手。

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

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

了解更多

FastAPI入门教程:让Python新手快速掌握WebSocket实时通信

欢迎来到FastAPI入门教程!想象一下,你想打造一个快递系统来收发包裹(数据),而不是用传统的写信方式(HTTP请求/响应),而FastAPI就是这个系统的核心工具,能让你轻松处理实时对话(WebSocket)。本教程专为有Python基础但没接触过Web开发的你设计,我们将通过动手实践和简单类比,一步步带你体验成功的喜悦。

第1部分:为什么选择FastAPI?一个生活化类比

假设你开了一家小餐馆,顾客通过菜单(API端点)下单,厨房(FastAPI服务器)快速制作食物(响应)。FastAPI就像这个高效厨房,它自动处理订单(请求)并返回美味佳肴(JSON数据)。相比于传统厨房(其他Web框架),它更简单、更快、更现代化,非常适合初学者。

第2部分:快速上手前的准备——安装和设置

首先,确保你的Python版本在3.7以上,然后打开终端或命令行,输入以下命令来安装必要的工具。这就像准备厨具一样简单!

pip install fastapi uvicorn
  • FastAPI:我们的主厨房工具。
  • Uvicorn:一个快速服务器,用于运行厨房。

安装完成后,你就拥有了所有基本工具,准备迎接第一个成功时刻!

第3部分:第一个简单示例——打造“Hello World”快递

让我们创建一个简单的Python文件,比如 main.py,并添加以下代码。这就像写下第一个菜单项。

from fastapi import FastAPI

app = FastAPI()  # 创建FastAPI应用,就像初始化厨房

@app.get("/")  # 定义一个路由,类似菜单上的首页
async def read_root():
    return {"message": "Hello, World!"}  # 返回一个简单的JSON响应

现在,在终端中运行这个应用:

uvicorn main:app --reload

打开浏览器,访问 http://127.0.0.1:8000,你会看到一个JSON显示 {"message": "Hello, World!"}。恭喜!你刚刚创建了第一个API,就像成功接到了第一单。

第4部分:扩展功能——添加更多菜单项和WebSocket实时聊天室

FastAPI不仅能处理简单的请求,还支持像WebSocket这样的实时通信。让我们扩展应用,添加一个路由来接收参数,并创建一个简单的WebSocket聊天室。

示例1:处理用户输入的快递

main.py 中添加新代码:

@app.get("/items/{item_id}")  # 动态路由,就像根据订单号查找包裹
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "query": q}  # 返回包含参数的JSON

重启服务器,访问 http://127.0.0.1:8000/items/123?q=test,你会看到响应显示 item_idquery。这就像顾客通过特定地址下单,厨房正确送达。

示例2:引入WebSocket——建立实时对话

WebSocket允许双向实时通信,就像电话对话而不是发送信件。在 main.py 中添加WebSocket支持:

from fastapi import WebSocket

@app.websocket("/ws")  # 定义一个WebSocket端点,类似开启一个聊天室
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()  # 接受连接,就像接听电话
    while True:
        data = await websocket.receive_text()  # 接收消息
        await websocket.send_text(f"你发送了: {data}")  # 发送回显消息

现在,你可以使用WebSocket客户端测试。这里提供一个简单方法:创建一个新的Python文件 test_websocket.py

import asyncio
import websockets

async def test():
    async with websockets.connect('ws://127.0.0.1:8000/ws') as websocket:
        await websocket.send("Hello, WebSocket!")
        response = await websocket.recv()
        print(f"收到回复: {response}")

asyncio.run(test())

运行这个测试文件(需要先安装 websockets 库:pip install websockets),你将看到控制台打印出回复。成功!你实现了实时通信,就像在聊天室里发送和接收消息。

第5部分:总结和进一步学习

通过本教程,你已经掌握了FastAPI的基础:

  • 快速入门:用简单的代码创建了API和WebSocket端点。
  • 生活化理解:将路由比作菜单、WebSocket比作电话对话,让概念更直观。
  • 成功时刻:从“Hello World”到实时聊天,每一步都让你体验成就感。

接下来,你可以探索更多FastAPI特性,比如数据验证、依赖注入,或构建更复杂的应用。记住,实践是学习的最佳方式——多尝试修改代码,看看会发生什么。祝你学习愉快,早日成为Web开发高手!

如需更多资源,请访问FastAPI官方文档或尝试在线教程。本教程代码示例已确保简单易懂,如有问题,建议结合Python基础复习。

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

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

获取工具包