5 路由的基本定义

FastAPI 路由基本定义

在构建 API 时,定义路由是核心的一部分。FastAPI 提供了一种非常直观和高效的方式来定义路由,支持 HTTP 请求方法(如 GETPOSTPUTDELETE 等),并能自动生成 OpenAPI 文档。本文将介绍 FastAPI 中如何定义和使用路由。

1. 安装 FastAPI 和 Uvicorn

首先,我们需要安装 FastAPI 和 Uvicorn。Uvicorn 是一个 ASGI 服务器,用于运行 FastAPI 应用。

pip install fastapi uvicorn

2. 创建第一个路由

FastAPI 的路由通过装饰器来定义。最常用的装饰器是 @app.get()@app.post() 等,它们分别对应 HTTP 请求方法。这里我们来定义一个简单的 GET 路由。

from fastapi import FastAPI

app = FastAPI()

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

在上面的代码中:python

  • @app.get("/"):定义了一个 GET 请求的路由,访问路径为 /
  • read_root:定义了该路由的处理函数。当访问该路由时,返回一个 JSON 响应。

3. 运行应用

保存上面的代码到 main.py,然后使用 Uvicorn 启动 FastAPI 应用:

uvicorn main:app --reload

--reload 参数允许在修改代码后自动重新加载应用。

在浏览器中访问 http://127.0.0.1:8000/,你应该会看到如下的响应:

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

4. 路由参数

FastAPI 支持路由参数,可以将 URL 路径中的变量传递给处理函数。通过在路径中添加大括号 {} 来定义变量。

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

此时访问 /items/42,返回:

{
  "item_id": 42
}

4.1 可选路由参数

FastAPI 还支持给路由参数设置默认值,使其变为可选参数。例如,下面的代码定义了一个带有可选参数的路由:

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

如果访问 /items/42?q=test,将返回:

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

如果没有提供 q 参数,返回的响应中 q 将为 None

5. 支持的 HTTP 请求方法

FastAPI 支持多种 HTTP 请求方法,以下是常见的几种:

  • @app.get("/path"):处理 GET 请求
  • @app.post("/path"):处理 POST 请求
  • @app.put("/path"):处理 PUT 请求
  • @app.delete("/path"):处理 DELETE 请求
  • @app.patch("/path"):处理 PATCH 请求
  • @app.options("/path"):处理 OPTIONS 请求

示例:POST 请求

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

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

上面的代码定义了一个 POST 路由 /items/,并通过 Item 类来接收请求体中的数据。

6. 路由和异步支持

FastAPI 支持异步视图函数。你可以使用 async def 定义异步路由处理函数,这对处理 I/O 密集型操作(如数据库查询、外部 API 调用等)非常有用。

@app.get("/async-example")
async def async_example():
    return {"message": "This is an async route"}

7. 自动生成 API 文档

FastAPI 自动生成 OpenAPI 和 Swagger 文档,可以通过 /docs 查看交互式 API 文档,或者通过 /redoc 查看 ReDoc 文档。这些文档会自动根据你定义的路由和请求参数生成。

例如,访问 http://127.0.0.1:8000/docs 可以查看 API 文档,展示所有定义的路由、请求方法、参数和返回类型。

FastAPI 的路由定义非常简单且功能强大。通过装饰器,可以快速定义多种 HTTP 请求方法的路由,并且支持路由参数、请求体模型验证、异步处理等高级功能。同时,FastAPI 还提供了自动生成文档的功能,极大地提升了开发效率。

如果你正在构建一个现代化的 Web API,FastAPI 是一个非常好的选择,尤其是在性能和开发体验上,FastAPI 都表现得非常出色。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安迪小宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值