FastAPI 教程

11.7 领域驱动设计(DDD)概念

Python初学者快速上手FastAPI教程:从零到一构建API

FastAPI 教程

面向有Python基础的初学者的FastAPI入门教程,通过生活化类比和逐步动手实践,快速构建你的第一个API,建立信心,无需Web开发经验。

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

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

了解更多

FastAPI入门教程:让Python初学者快速上手

欢迎来到FastAPI世界

FastAPI就像你厨房里的高效披萨工具:它能让开发API变得快速、简单又美味!适合新手快速入门,因为你已经有Python基础,我们跳过繁琐理论,直接动手玩起来。

类比: 把FastAPI想象成一个智能点餐系统——你定义菜单(API端点),顾客(客户端)点餐(发送请求),系统快速上菜(返回响应)。

准备工作:安装和设置

首先,确保你安装了Python(建议Python 3.7+)。打开终端或命令提示符,运行以下命令安装FastAPI和一个服务器(Uvicorn):

pip install fastapi uvicorn

成功时刻: 看到安装完成的消息后,恭喜!你已经准备好打造你的第一个API了。

你的第一个API:Hello World!

创建一个新文件,比如 main.py,输入以下代码:

from fastapi import FastAPI

app = FastAPI()

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

保存文件。现在,启动服务器:

uvicorn main:app --reload

打开浏览器访问 http://127.0.0.1:8000/,你会看到 {"Hello": "World"} 的JSON响应!

成功时刻: 哇,你的第一个API已经在线了!这就像一个魔术师变出了第一个兔子——简单但令人兴奋。

理解路由:你的API地址本

路由是API的入口点,就像电话本上的不同号码。在上例中,@app.get("/") 定义了一个GET请求的路由。

添加新路由:

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

现在访问 http://127.0.0.1:8000/items/42,返回 {"item_id": 42}

成功时刻: 看到数字42了吗?你的API现在能处理动态输入了,就像电话可以接通不同的人一样。

处理请求和响应:点餐和上菜的类比

  • 请求: 客户端发送的“订单”,比如浏览器访问一个URL。
  • 响应: API返回的“菜品”,这里是JSON数据。

FastAPI自动处理类型转换,比如把URL中的字符串参数转换成整数。

示例:添加查询参数

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

访问 http://127.0.0.1:8000/items/?skip=5&limit=20,返回 {"skip": 5, "limit": 20}

成功时刻: 现在你的API能理解更复杂的“订单”了,就像餐厅可以定制披萨配料!

参数:让你的API更智能

FastAPI支持路径参数(如 {item_id})、查询参数(如 skiplimit),还能自动验证数据类型。

生活化类比: 路径参数像披萨的尺寸(必须指定),查询参数像额外的配料(可选添加)。

实战:创建一个待办事项API

让我们构建一个简单的待办事项列表API,模拟CRUD操作(创建、读取、更新、删除)。

步骤:

  1. main.py 中添加一个列表来存储事项。
  2. 定义多个路由来处理操作。

代码示例:

from fastapi import FastAPI
from typing import List

app = FastAPI()

todos = ["学习FastAPI", "写第一个API"]

@app.get("/todos/")
def get_todos() -> List[str]:
    return todos

@app.post("/todos/")
def add_todo(todo: str):
    todos.append(todo)
    return {"message": "待办事项已添加", "todo": todo}

@app.delete("/todos/{todo_index}")
def delete_todo(todo_index: int):
    if todo_index < len(todos):
        deleted_todo = todos.pop(todo_index)
        return {"message": "待办事项已删除", "deleted_todo": deleted_todo}
    else:
        return {"error": "索引超出范围"}

使用工具如Postman或curl测试POST和DELETE请求,但为了简单,我们可以先用浏览器测试GET请求。

访问 http://127.0.0.1:8000/todos/,看到初始待办列表。

成功时刻: 你现在有了一个功能性的待办事项API!像管理自己的任务清单一样酷炫。

总结与下一步

恭喜!你已经学会了FastAPI的基础:设置环境、创建路由、处理参数,并构建了一个简单的API。

类比回顾: 从快速披萨工具到智能点餐系统,你已经能制作自己的“数字美食”。

下一步建议:

  • 探索FastAPI的更多特性,如数据模型(Pydantic)和依赖注入。
  • 尝试连接数据库来持久化数据。
  • 部署你的API到云端,如Heroku或AWS。

记住,每次小成功都是进步的里程碑。继续实践,FastAPI会让Web开发变得轻松有趣!


这个教程通过动手示例和类比,帮助你快速上手FastAPI。如果有问题,多查官方文档或社区,享受编程的乐趣!

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

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

获取工具包