FastAPI
的APIRouter
是一个用于将不同功能模块的端点进行划分的工具,类似于Flask
中的蓝图(Blueprint)。通过APIRouter
,你可以将应用程序的不同部分组织成独立的路由模块,从而提高代码的可读性和可维护性。
APIRouter
允许你在不同的模块中定义路由操作,然后将它们挂载到全局应用程序路由中。这样,你可以将相关的路由操作组织在一起,使代码结构更加清晰,同时便于管理和维护
APIRouter使用
假设你在routers/router_1.py
文件下,定义了以下这么一个非常简单的APIRouter
:
from fastapi import APIRouter
router = APIRouter()
@router.get("/get")
async def get():
return {
'api': 'get'}
@router.post("/post")
async def post():
return {
'api': 'post'}
@router.put("/put")
async def put():
return {
'api': 'put'}
@router.patch("/patch")
async def patch():
return {
'api': 'patch'}
@router.delete("/delete")
async def delete():
return {
'api': 'delete'}
定义好APIRouter之后,需要在应用程序中将其添加进来,如下:
from fastapi import FastAPI
from routers.router_1 import router
app = FastAPI()
app.include_router(router)
当我们添加一组路由时,我们需要给这些路由加一个前缀,表示这是同一批路由。我们可以用到prefix
参数,如下:
from fastapi import APIRouter
router = APIRouter(prefix="/apis")
@router.get("/get")
async def get():
return {
'api': 'get'}
如此,我们可以通过http://localhost:8000/apis/get
来请求该路由。
参数介绍
APIRouter常见参数如下:
prefix
prefix
为API前缀,接收一个str
数据
tags
tags
为路由设置标签,接收一个List[str]
或者List[Enum]
类型
router = APIRouter(tags=["home", "user"])
@router.get("/home")
async def home():
return {
"code": 1}
在Swagger UI中效果如下:
dependencies
dependencies
为依赖项,可用来做一些额外操作(例如权限验证等),接收一个Sequence[params.Depends]
类型。如下:
from fastapi import Header
from fastapi import Depends
from fastapi import APIRouter
async def token_validation(authorization: str = Header(...)):
print(