定义路由和视图函数
首先,我们需要导入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}
的形式定义的,并在对应的视图函数中作为参数接收。
@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
在视图函数中访问。
@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
。