FastAPI基础-路由和视图函数(一)

2023-05-07 20:48:02 浏览数 (2)

定义路由和视图函数

首先,我们需要导入FastAPI类,并创建一个FastAPI应用程序实例。然后,我们可以定义路由和视图函数。路由是一个字符串,表示我们想要绑定到该路由的URL路径。视图函数是一个Python函数,当该路由收到请求时会被调用。

代码语言:javascript复制
from fastapi import FastAPI

app = FastAPI()

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

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

在上面的代码中,我们定义了两个路由和对应的视图函数。第一个路由/绑定到函数read_root(),当收到GET请求时返回一个JSON响应,包含键值对{"Hello": "World"}。第二个路由/items/{item_id}绑定到函数read_item(),当收到GET请求时返回一个JSON响应,包含键值对{"item_id": item_id, "q": q}。路由中的{item_id}是一个路径参数,我们将在下一节中介绍。

在这里,我们使用了装饰器@app.get()来告诉FastAPI将这些视图函数绑定到GET请求的对应路由。还有其他的装饰器,如@app.post()@app.put()等,可以用于处理不同类型的HTTP请求。

处理路径参数

在FastAPI中,我们可以使用路径参数来处理动态的URL路径。路径参数是在路由中以{parameter}的形式定义的,并在对应的视图函数中作为参数接收。

代码语言:javascript复制
@app.get("/users/{user_id}")
async def read_user(user_id: int):
    return {"user_id": user_id}

在上面的代码中,我们定义了一个路由/users/{user_id},其中{user_id}是路径参数。当收到GET请求时,FastAPI将提取路径参数user_id,并将其传递给视图函数read_user()作为参数。视图函数返回一个JSON响应,包含键值对{"user_id": user_id}

处理查询参数

除了路径参数外,我们还可以使用查询参数来接收额外的数据。查询参数是在URL路径中以?parameter=value的形式传递的,可以使用request.query_params在视图函数中访问。

代码语言:javascript复制
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

在上面的代码中,我们定义了一个路由/items/{item_id}和一个查询参数q。查询参数以=分隔查询参数的键和值,并以&分隔多个查询参数。当收到GET请求时,FastAPI将提取查询参数q,并将其传递给视图函数read_item()作为参数。如果查询参数未被提供,则默认值为None

0 人点赞