15.4 Kubernetes 部署基础
FastAPI 入门教程:Python 初学者的快速上手指南
这是一个面向Python初学者的FastAPI入门教程,详细讲解如何从零开始搭建Web API。教程以动手实践为主,包含简单易懂的示例和生活化类比,帮助初学者快速建立开发信心。
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模型验证数据,确保输入有效。
下一步建议:
- 尝试添加更多功能,比如更新或删除物品的PUT和DELETE路由。
- 探索FastAPI的更多特性,如依赖注入、中间件等。
- 阅读官方文档(https://fastapi.tiangolo.com/),深入学习。
- 动手做一个小项目,比如一个简单的待办事项API。
记住,实践是学习的关键。每一步都尝试自己敲代码,并验证结果。如果你遇到问题,返回这里或查看文档。你已经迈出了成为一名Web开发者的重要一步!保持好奇心,继续前进吧!