FastAPI 教程

15.4 Kubernetes 部署基础

FastAPI 入门教程:Python 初学者的快速上手指南

FastAPI 教程

这是一个面向Python初学者的FastAPI入门教程,详细讲解如何从零开始搭建Web API。教程以动手实践为主,包含简单易懂的示例和生活化类比,帮助初学者快速建立开发信心。

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

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

了解更多

FastAPI 入门教程:Python 初学者的快速上手指南

介绍

嗨!欢迎来到FastAPI入门教程。如果你有一些Python基础,但对Web开发一窍不通,别担心!FastAPI是一个现代、快速的Python Web框架,它就像给你的代码装上了一对翅膀,让你轻松创建API。想象一下,API就像一个餐厅的菜单:你通过请求点菜,餐厅通过响应上菜。这里,你就是点菜的顾客,FastAPI就是那个高效的厨师兼服务员!

FastAPI的优势:

  • 速度快:基于Starlette和Pydantic,性能卓越。
  • 简单易学:语法清晰,非常适合初学者。
  • 自动文档:它会自动生成交互式API文档,让你能立刻测试代码。

让我们一步步来,你很快就会体验到“成功时刻”!

步骤1:安装FastAPI和Uvicorn

首先,确保你安装了Python(建议3.7+)。然后,打开终端或命令提示符,运行以下命令来安装所需的包。使用pip,就像下载一个工具箱一样简单!

pip install fastapi uvicorn

这安装了FastAPI本身和Uvicorn,一个用于运行Web应用的服务。如果你看到安装成功的消息,恭喜你!这是你的第一个小成功。

步骤2:创建你的第一个FastAPI应用

现在,让我们编写一个简单的程序。创建一个新文件,比如叫 main.py,用你喜欢的文本编辑器打开它。我们将从一个经典的“Hello World”开始!

from fastapi import FastAPI

# 创建一个FastAPI实例,就相当于搭建了一个小小的Web服务
app = FastAPI()

# 定义一个路由,当用户访问根路径(/)时,会执行这个函数
@app.get("/")
async def read_root():
    return {"Hello": "World"}

保存文件。这个代码做了什么?

  • 我们导入了FastAPI,然后创建了一个app实例。
  • 使用 @app.get("/") 装饰器,告诉FastAPI:当用户通过GET方法访问根路径时,运行 read_root 函数。
  • 函数返回一个简单的JSON对象,内容为 {"Hello": "World"}

类比一下:这就像在餐厅菜单上写了第一道菜“开胃汤”,顾客点它时,你立刻端出来。

步骤3:运行应用并查看结果

回到终端,导航到你的 main.py 文件所在的目录,然后运行这个命令:

uvicorn main:app --reload

解释:

  • main:app 指定了文件名和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已经活生生地在工作了!这是一个重要的“成功时刻”,因为你能立刻看到成果。

同时,访问 http://127.0.0.1:8000/docs,你会看到一个自动生成的交互式API文档页面。在这里,你可以直接点击“Try it out”来测试你的API,不用写任何额外代码。这对于调试和学习非常有帮助!

步骤4:添加更多路由和示例

现在,让我们添加一些功能,让API更有趣。编辑 main.py,添加另一个路由。

from fastapi import FastAPI

app = FastAPI()

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

# 新路由:当访问 /items/1 时,返回物品信息
@app.get("/items/{item_id}")
async def read_item(item_id: int):
    # item_id是一个路径参数,用户可以在URL中传入不同的数字
    return {"item_id": item_id, "name": "Sample Item"}

保存文件。由于我们用了 --reload,代码会自动更新。在浏览器中访问 http://127.0.0.1:8000/items/1,你会看到 {"item_id": 1, "name": "Sample Item"}。试试 http://127.0.0.1:8000/items/42,它也能工作!

这个例子展示了路径参数的使用:就像餐厅菜单上有一道“定制披萨”,你可以指定不同的配料(item_id)。

步骤5:使用查询参数和JSON响应

让我们再增加一些复杂性。修改 main.py,添加一个使用查询参数的路由。

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id, "name": "Sample Item"}

# 新路由:使用查询参数,比如 /items?skip=0&limit=10
@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
    # skip和limit是查询参数,有默认值
    return {"skip": skip, "limit": limit, "data": ["item1", "item2", "item3"]}

保存文件。现在,访问 http://127.0.0.1:8000/items?skip=2&limit=5,你会看到 {"skip": 2, "limit": 5, "data": ["item1", "item2", "item3"]}。如果不指定参数,比如 http://127.0.0.1:8000/items,它会使用默认值。

这里,查询参数就像餐厅的点单选项:你可以选择跳过前几道菜(skip),限制菜品的数量(limit)。

步骤6:尝试发送POST请求

现在,让我们模拟一个创建新物品的场景。添加一个POST路由。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 定义一个Pydantic模型,用于验证输入数据
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = False  # 默认值

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

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id, "name": "Sample Item"}

@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
    return {"skip": skip, "limit": limit, "data": ["item1", "item2", "item3"]}

# POST路由:用于创建新物品
@app.post("/items/")
async def create_item(item: Item):
    # item参数会自动从请求体中解析并验证
    return {"message": "Item created", "item": item}

保存文件。这个例子引入了Pydantic模型,它就像一个数据模板,确保输入的数据格式正确。要测试POST请求,你可以使用交互式文档页面(http://127.0.0.1:8000/docs)。在页面上找到POST /items/ 的端点,点击“Try it out”,输入JSON数据如 {"name": "New Item", "price": 9.99, "is_offer": true},然后执行。你会看到一个成功的响应,确认物品已创建!

这就像在餐厅点了一道新菜,服务员记录下你的要求。

总结和下一步

恭喜你!你已经学会了FastAPI的基础:安装、创建应用、定义路由、使用路径和查询参数、发送GET和POST请求。这些“成功时刻”应该让你对Web开发更有信心了。

回顾一下我们学到的东西:

  • FastAPI让创建API变得简单快捷。
  • 通过装饰器定义路由,就像给函数贴上标签。
  • 自动文档帮助你测试和学习。
  • 使用Pydantic模型验证数据,确保输入有效。

下一步建议:

  1. 尝试添加更多功能,比如更新或删除物品的PUT和DELETE路由。
  2. 探索FastAPI的更多特性,如依赖注入、中间件等。
  3. 阅读官方文档(https://fastapi.tiangolo.com/),深入学习。
  4. 动手做一个小项目,比如一个简单的待办事项API。

记住,实践是学习的关键。每一步都尝试自己敲代码,并验证结果。如果你遇到问题,返回这里或查看文档。你已经迈出了成为一名Web开发者的重要一步!保持好奇心,继续前进吧!

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

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

获取工具包