Jupyter AI

10 FastAPI教程:定义路由

📅 发表日期: 2024年8月18日

分类: 🚀Python FastAPI 入门

👁️阅读: --

在上一篇文章中,我们介绍了FastAPI的工作原理,理解了FastAPI背后的核心概念。现在,我们将深入探讨如何在FastAPI中定义路由,并处理请求。

引入FastAPI

首先,我们需要确保已经安装了FastAPIuvicorn。您可以使用以下命令进行安装:

pip install fastapi uvicorn

接下来,我们创建一个简单的FastAPI应用:

from fastapi import FastAPI

app = FastAPI()

定义路由

在FastAPI中,路由是将特定的HTTP请求映射到处理函数的方式。我们可以使用装饰器来定义路由。下面是如何定义一个基本的GET请求的示例:

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

路由参数

FastAPI支持路径参数和查询参数。下面是一个示例,展示如何使用路径参数:

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

在这个示例中,我们定义了一个路由/items/{item_id},其中item_id是一个路径参数。q是一个可选的查询参数。

路由分组

在实际应用中,您可能需要将路由分组。例如,可以使用APIRouter来组织路由。以下是一个样例:

from fastapi import APIRouter

router = APIRouter()

@router.get("/users/{user_id}")
def read_user(user_id: int):
    return {"user_id": user_id}

app.include_router(router, prefix="/api/v1")

通过这种方式,我们将用户相关的路由组织在一个路由器下,并在访问时添加了前缀/api/v1

响应模型

为了更好地处理返回的数据,FastAPI允许我们定义响应模型。我们可以使用Pydantic模型来定义请求和响应的格式。下面是一个示例:

from pydantic import BaseModel

class Item(BaseModel):
    id: int
    name: str
    description: str = None

@app.post("/items/")
def create_item(item: Item):
    return item

在这个例子中,Item类定义了请求的格式,而create_item函数会接收一个Item对象作为参数,当POST请求到/items/时,会返回相同的对象。

错误处理

FastAPI也提供了错误处理的功能。如果我们需要处理特定的错误,我们可以抛出HTTP异常。例如:

from fastapi import HTTPException

@app.get("/items/{item_id}")
def read_item(item_id: int):
    if item_id < 0:
        raise HTTPException(status_code=400, detail="Item ID must be greater than or equal to 0")
    return {"item_id": item_id}

这段代码在item_id小于0时会返回一个400 Bad Request的错误响应。

小结

在这一部分中,我们学习了如何在FastAPI中定义路由以及处理HTTP请求。通过使用FastAPI,我们能够快速实现功能强大且易于维护的API结构。我们定义了简单的路由、带有路径和查询参数的路由、分组路由、响应模型以及错误处理方法。

在下一篇文章中,我们将继续讨论如何使用HTTP方法,包括GET、POST、PUT和DELETE等,它们是构建RESTful API的基础。请保持关注!

🚀Python FastAPI 入门 (滚动鼠标查看)