FastAPI 教程

5.2 带参数的依赖项

FastAPI入门教程:带参数的依赖项 - Python初学者快速上手

FastAPI 教程

通过简单易懂的FastAPI教程,学习如何在Web开发中使用带参数的依赖项。适合Python新手,包含大量代码示例和成功时刻,快速建立信心。

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

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

了解更多

FastAPI入门:带参数的依赖项教程

欢迎来到FastAPI世界!

你好,Python初学者!如果你刚刚学会Python语法,想尝试Web开发,但又怕理论太多?别担心!本教程带你一步步上手FastAPI,重点学习带参数的依赖项——听起来有点高级,其实很简单!我们用生活化的比喻和动手示例来理解,保证你快速获得成就感。

什么是依赖项?

想象一下:你要做一杯咖啡,咖啡机就是你的核心工具。但咖啡机需要水、咖啡豆和电才能工作——这些就是依赖项。没有它们,咖啡机啥也做不了。在FastAPI中,依赖项就像是这些必需品,帮你把复杂功能(比如验证用户或连接数据库)拆分成小模块,让代码更整洁。

带参数的依赖项就更厉害了:就像咖啡机有个按钮可以调整浓度,你可以根据需求传递不同参数给依赖项,让它变得更灵活。

准备工作:快速搭建环境

  1. 安装FastAPI:打开终端或命令提示符,运行以下命令。如果你已经安装了Python(建议3.7以上),这很简单!
    pip install fastapi uvicorn
    
    • fastapi是框架本身,uvicorn是用来运行服务器的小工具。
  2. 创建新文件:比如,在桌面上新建一个文件叫 main.py

完成了吗?太棒了!你已经迈出了第一步。

动手实践1:一个简单的依赖项示例(不带参数)

我们先从最简单的开始,建立信心!

目标:创建一个依赖项,它返回一个固定的欢迎消息,然后在API中调用它。

打开 main.py,输入以下代码:

from fastapi import FastAPI, Depends

# 创建一个FastAPI应用,就像启动你的咖啡机
app = FastAPI()

# 定义一个依赖项:返回欢迎消息
def get_welcome_message():
    return "欢迎使用FastAPI!"

# 定义一个API端点(想象成咖啡机的一个按钮)
@app.get("/hello")
def hello(message: str = Depends(get_welcome_message)):
    # 这里使用依赖项:把欢迎消息传递进来
    return {"message": message}

解释

  • get_welcome_message 是我们的依赖项函数——它就像一个固定提供欢迎消息的小助手。
  • hello 端点中,我们使用 Depends(get_welcome_message) 来调用这个依赖项,message 变量就会自动获取返回的字符串。

运行并测试

  1. 在终端中,切换到 main.py 所在目录。
  2. 运行命令:
    uvicorn main:app --reload
    
    • 这启动了一个本地服务器。你会看到类似 INFO: Uvicorn running on http://127.0.0.1:8000 的输出。
  3. 打开浏览器,访问 http://127.0.0.1:8000/hello

成功时刻:你会看到屏幕上显示 {"message": "欢迎使用FastAPI!"}!恭喜,你已经成功创建了第一个依赖项!现在,咖啡机能出咖啡了(但只是固定口味)。

动手实践2:带参数的依赖项

现在,让我们加点参数,让依赖项更智能!

目标:修改依赖项,根据你传递的参数(比如用户名)返回个性化欢迎消息。

更新 main.py 中的代码:

from fastapi import FastAPI, Depends

app = FastAPI()

# 定义一个带参数的依赖项:接受一个名字作为输入
def get_personalized_welcome(name: str):
    return f"你好,{name}!欢迎来到FastAPI世界!"

# API端点:传递参数给依赖项
@app.get("/greet/{username}")
def greet(username: str, message: str = Depends(get_personalized_welcome)):
    return {"message": message}

解释

  • get_personalized_welcome 现在有一个参数 name——这就是带参数的依赖项!它需要外部传入值才能工作。
  • greet 端点中,我们从URL路径(/{username})获取 username 参数,然后FastAPI自动将它传递给依赖项。Depends 会调用 get_personalized_welcome(username),结果存储在 message 中。

运行并测试

  1. 确保服务器还在运行(如果停止了,用 uvicorn main:app --reload 重新启动)。
  2. 访问 http://127.0.0.1:8000/greet/小明

成功时刻:你会看到 {"message": "你好,小明!欢迎来到FastAPI世界!"}!试试把URL中的“小明”换成你的名字,消息会自动变化——依赖项变得更灵活了!

进阶示例:更复杂的参数使用

为了加深理解,我们再做一个示例,使用多个参数和默认值。

目标:创建一个依赖项,根据用户年龄和城市返回个性化问候,并设置默认值。

main.py 中添加新代码:

from fastapi import FastAPI, Depends

app = FastAPI()

# 带多个参数的依赖项
def get_custom_greeting(age: int = 18, city: str = "北京"):
    # 根据年龄和城市生成消息
    if age < 18:
        age_group = "年轻人"
    else:
        age_group = "成年人"
    return f"来自{city}的{age_group},你好!欢迎探索FastAPI。"

# API端点:传递查询参数
@app.get("/custom-greet")
def custom_greet(message: str = Depends(get_custom_greeting)):
    return {"greeting": message}

解释

  • get_custom_greeting 接受两个参数 agecity,并设置了默认值(如果没有提供,就用默认值)。这展示了带参数依赖项的灵活性。
  • custom_greet 端点中,我们依赖于这个函数,但注意:我们没有显式传递参数!FastAPI会自动从请求中获取,比如查询参数。

运行并测试

  1. 访问 http://127.0.0.1:8000/custom-greet——你会看到使用默认值的消息。
  2. 现在,访问 http://127.0.0.1:8000/custom-greet?age=25&city=上海

成功时刻:页面显示 {"greeting": "来自上海的成年人,你好!欢迎探索FastAPI。"}!通过URL参数,你控制了依赖项的输出——这正是带参数依赖项的强大之处。

总结和下一步

恭喜你完成了本教程!你已经学会了:

  • 依赖项是什么:就像咖啡机的必需品,帮你组织代码。
  • 带参数的依赖项:通过传递参数(如名字、年龄),让依赖项更灵活、可定制。
  • 动手实践:从固定消息到个性化问候,你构建了多个API端点,并快速看到了结果。

关键点回顾

  • 使用 def 定义依赖项函数,参数可以根据需要设置。
  • 在端点中使用 Depends 来调用依赖项,FastAPI会自动处理参数传递。
  • 参数可以来自URL路径、查询参数等,这使得代码更模块化和可重用。

下一步建议

  • 尝试创建一个依赖项来模拟用户登录验证,比如传递密码参数返回验证结果。
  • 探索FastAPI官方文档,学习更多高级功能,但记住:先动手,再理论!

记住,Web开发并不难——就像学做咖啡,从基础开始,慢慢添加口味。你已经有了一个良好的开端,继续加油!

如果有问题,随时回顾示例代码或搜索FastAPI社区。祝你编程愉快!

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

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

获取工具包