FastAPI 基于 APIRouter 实例的路由注册

前言

前段时间使用FastApi重构了Java代码覆盖率统计服务,当然是基于快速简单的FastApi使用,现在把知识延伸,深挖一下每个知识点,对于FastApi路由注册,我们刚接触框架时,最简单的注册方法就是:基于app实例对象提供的装饰器或函数进行注册。但在查看一些优秀的开源源码时,好多使用的APIRouter,那就先看看APIRouter如何注册路由呢?

什么是 APIRouter?

APIRouter 是 FastAPI 中的一个类,用于定义和管理路由。它允许你将一组相关的路由和处理函数组织在一起,形成一个独立的模块化单元,以便更好地组织和管理你的 API。

使用 APIRouter 的优势

  • 模块化组织 : 可以将相关的路由和处理函数组织在一个 APIRouter 实例中,使得代码结构更加清晰和易于维护。
  • 路由重用 : 可以将同一个 APIRouter 实例在多个地方引用,实现路由的重用,避免重复编写相同的路由配置。
  • 路由前缀 : 可以为 APIRouter 实例指定一个统一的前缀,用于统一管理相关路由的路径。
  • 异常处理 : 可以在 APIRouter 实例上注册异常处理器,对特定路由的异常进行定制化处理。

使用案例

python 复制代码
from fastapi import FastAPI, APIRouter
​
​
router_login = APIRouter(prefix="/login", tags=["登录模块"])
router_pay = APIRouter(prefix="/pay", tags=["支付模块"])
​
@router_login.get("")
async def login():
    return {"message": "登录成功"}
​
@router_pay.get("/order")
async def pay():
    return {"message": "支付成功"}

上面的代码中,引入了APIRouter这个新类,通过该类实例化两个不同的APIRouter对象,并将它们分别绑定关联到login()和pay()两个视图函数上。

  • prefix:当前整个全局路由对象请求URL地址前缀。
  • tags:API分组归属标签。

我们已经完成路由分组和对应视图函数绑定,然后在 FastAPI 应用程序中注册 APIRouter,代码如下

scss 复制代码
app = FastAPI()
​
app.include_router(router_login)
app.include_router(router_pay)

上面代码中使用app.include_router()把APIRouter对象添加到app路由列表里面。include_router()函数的执行过程其实就是把所有子router中的路由都拆解出来并添加到根router,经过处理后,路由节点就注册完成了

好了,我们启动服务看看效果

给路由配置多个HTTP请求方法

APIRouter实例对象提供api_route的装饰器来支持配置多个HTTP请求方法

示例:

python 复制代码
@router_login.api_route("", methods=["GET", "POST"])
async def login():
    return {"message": "登录成功"}
​
@router_pay.api_route("/order", methods=["GET", "POST"])
async def pay():
    return {"message": "支付成功"}
​

启动服务,我们在看看效果

最后

通过使用 APIRouter 实例,可以有效地组织和管理 FastAPI 应用程序中的路由,使得代码结构更加清晰和模块化。它提供了路由重用、路由前缀、异常处理等功能,为开发者提供了更好的开发体验和代码组织方式。
之后,决定再使用FastAPI搭建几个服务进行练手,后续也会输出相关文档,尽情期待吧!

相关推荐
玫幽倩2 分钟前
2026黄河流域公安院校-电子物证单项赛(程序逆向分析+服务器取证)
运维·服务器·python·电子取证·逆向·程序分析·服务器取证
北斗落凡尘6 分钟前
LangGraph 入门实战(4)
python·langchain
liwulin050625 分钟前
【PYTHON】使用Selenium + ChromeDriver以及XPATH语法
开发语言·python·selenium
copyer_xyf27 分钟前
Agentic RAG 实战:PostgreSQL + LangGraph 一条链路
python·postgresql·agent
动力 continue34 分钟前
Python 元类与异常类:类的“制造工厂”与“报错定制师”
开发语言·python·制造
雪隐37 分钟前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
147API42 分钟前
Python批量生成蒸馏数据,并发、重试、幂等和断点续跑
开发语言·jvm·python
青 春 记 忆44 分钟前
零基础入门python04:用注册校验理解字典、集合和条件判断
开发语言·vscode·python·python3.11
952361 小时前
Sentinel
java·后端·spring·sentinel·springcloud
kels88991 小时前
实战排坑:黄金实时API开发,XAUUSD Tick报文异常处理实践
开发语言·python·websocket·网络协议·信息可视化