FastAPI,超高性能的 Web 框架,让你的 API 快如闪电!

大家好,我是“一行”,今天我们来聊聊一个非常有趣且强大的 Python Web 框架——FastAPI。如果你是 Python 开发者,并且对构建 Web API 有兴趣,那么你一定会爱上这个框架!FastAPI 是为了高性能而生的,它的速度可以和 Node.js、Go 这种语言的 API 相媲美,而且它还支持自动化生成文档、类型检查和验证等一系列超级实用的功能。今天,我们就一起深入了解 FastAPI,看看它是如何帮助我们高效、轻松地构建 Web 应用的!


什么是 FastAPI?

FastAPI 是一个现代的、快速(高性能)的 Web 框架,专门用于构建 APIs。它的名字就代表了它的特点:Fast(快速)API(应用程序接口)

FastAPI 的优势主要体现在:

  1. 性能:FastAPI 是基于 Starlette 构建的,而 Starlette 是一个非常高效的 Web 框架,FastAPI 使得我们的 API 性能极为优秀。

  2. 易用性:FastAPI 支持自动生成 OpenAPI 文档,减少了手动编写文档的麻烦。

  3. 自动验证:内置的 Pydantic 库让输入的数据自动进行验证,避免了很多常见的错误。


如何安装 FastAPI 和 Uvicorn

FastAPI 是一个轻量级的框架,安装起来非常简单。我们还需要安装 Uvicorn 作为服务器,来运行我们的 FastAPI 应用。Uvicorn 是一个高性能的 ASGI 服务器,专门用来与 FastAPI 配合。

打开命令行,输入以下命令安装 FastAPI 和 Uvicorn:

pip install fastapi uvicorn

创建第一个 FastAPI 应用

接下来,我们来创建一个简单的 FastAPI 应用,展示如何快速启动一个 API。

代码示例 1:创建简单的 API
from fastapi import FastAPI

# 创建 FastAPI 实例
app = FastAPI()

# 定义一个路由,访问根路径时返回一个简单的消息
@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

解释:

  • 首先,我们导入了 FastAPI 类,并创建了一个 FastAPI 实例 app

  • 然后,我们使用 @app.get("/") 装饰器定义了一个 GET 请求的路由,它会返回一个简单的 JSON 响应。

小贴士:FastAPI 使用的是 Python 的类型注解,所以你可以在函数参数和返回值中使用类型提示。FastAPI 会自动进行类型验证和转换,让你的代码更安全、更高效。


运行 FastAPI 应用

保存上面的代码为 main.py 文件后,我们可以使用 Uvicorn 启动这个应用:

uvicorn main:app --reload
  • main 是文件名(不需要 .py 后缀),app 是 FastAPI 实例。

  • --reload 参数让你在修改代码后自动重启服务器,方便开发调试。

打开浏览器,访问 http://127.0.0.1:8000/,你应该会看到返回的 JSON 数据:

{
  "message": "Hello, FastAPI!"
}

非常简单吧!这就是 FastAPI 的基本使用。


处理请求参数:查询参数和路径参数

FastAPI 提供了丰富的方式来处理客户端发送的请求参数。常见的请求参数包括查询参数和路径参数。让我们分别来看一下如何使用它们。

代码示例 2:查询参数
from fastapi import FastAPI

app = FastAPI()

@app.get("/greet")
def greet(name: str = "World"):
    return {"message": f"Hello, {name}!"}

解释:

  • name 是一个查询参数,可以通过 URL 查询字符串传递。如果请求 URL 是 /greet?name=John,返回的消息就是 Hello, John!。如果没有传递 name 参数,默认值是 World

访问:

http://127.0.0.1:8000/greet?name=Alice

返回:

{
  "message": "Hello, Alice!"
}

代码示例 3:路径参数
from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def get_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

解释:

  • 这里我们定义了一个路径参数 item_id,通过 URL 路径传递。

  • q 是查询参数,可以选择性传递。

访问:

http://127.0.0.1:8000/items/42?q=test

返回:

{
  "item_id": 42,
  "q": "test"
}

请求体:使用 Pydantic 模型

在 FastAPI 中,我们经常需要接收复杂的请求数据,通常是 JSON 格式的。为了处理这些数据,FastAPI 使用了 Pydantic 模型来验证和解析请求体。

代码示例 4:接收 JSON 数据
from fastapi import FastAPI
from pydantic import BaseModel

# 定义 Pydantic 模型
class Item(BaseModel):
    name: str
    price: float
    is_available: bool

app = FastAPI()

@app.post("/items/")
def create_item(item: Item):
    return {"name": item.name, "price": item.price, "is_available": item.is_available}

解释:

  • 我们定义了一个 Item 类,继承自 Pydantic 的 BaseModel,它会自动验证请求体中的数据类型。

  • create_item 路由会接收一个 POST 请求,内容是一个 JSON 对象,FastAPI 会自动将 JSON 数据解析为 Item 对象,并进行类型验证。

请求:

POST http://127.0.0.1:8000/items/
Content-Type: application/json
{
  "name": "Laptop",
  "price": 1500.50,
  "is_available": true
}

返回:

{
  "name": "Laptop",
  "price": 1500.5,
  "is_available": true
}

自动生成文档

FastAPI 的一大亮点是它能自动生成 API 文档。只要你启动了 FastAPI 应用,它就会自动为你生成基于 OpenAPI 的文档,并且支持交互式测试。

访问:

http://127.0.0.1:8000/docs

你会看到一个漂亮的 API 文档界面,可以直接通过这个页面发送请求来测试你的 API。


总结

今天我们一起学习了 FastAPI 的基本用法,了解了如何创建一个高效的 Web API。通过简单的例子,我们展示了如何定义路由、处理请求参数、接收请求体并自动验证数据类型,还体验了 FastAPI 自动生成文档的便捷功能。

小贴士

  • FastAPI 是基于 Python 的类型注解的,记得在函数参数中使用类型注解,它不仅让代码更清晰,还能让 FastAPI 自动进行数据验证。

  • 使用 Pydantic 模型来处理复杂数据时,确保你正确地定义了每个字段的类型和约束。

鼓励大家:Python 学习不仅仅是了解概念,最重要的是动手实践!通过多写代码、调试、测试,来加深对 FastAPI 的理解。今天的 Python 学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,Python 学习节节高!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值