You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅为验证引入FastAPI依赖却不使用返回值是否属于不良实践?

问题解答

这种仅为验证目的引入依赖却不使用返回值的做法不是不良实践,反而完全符合FastAPI的设计思路,甚至是推荐的权限控制方式,原因如下:

  • 依赖注入的核心价值之一就是处理副作用逻辑:FastAPI的依赖系统本身就支持这类"执行逻辑、可选返回值"的场景。AdminCurrentUserDep的核心作用是验证用户身份权限,只要它能在接口执行前完成验证并在失败时抛出错误,即使不使用返回的admin_user对象,也是合理的用法。
  • 可读性更强:把权限依赖放在接口参数列表里,其他开发者扫一眼函数签名就能立刻知道这个接口需要管理员权限,不需要深入函数体查找内部调用的验证逻辑,权限要求一目了然。
  • 复用性更高:这种依赖可以直接在所有需要管理员权限的接口中复用,不用每个接口都重复写一遍内部调用验证函数的代码,符合DRY(Don't Repeat Yourself)原则。

至于是否要改为在接口内部显式调用验证函数?完全没必要,除非你的验证逻辑需要依赖接口内部生成的参数(比如当前请求的业务数据),否则参数声明的方式在可读性、复用性上都更优。

如果觉得参数列表里的admin_user变量名容易让人误解(以为会被使用),可以用下划线_作为变量名,明确表示这个依赖的返回值不需要被使用,代码会更清晰:

@router.post(
    "/",
    response_model=GenreOutDTO,
    status_code=status.HTTP_201_CREATED
)
async def create_genre(
    genre: GenreInDTO,
    genre_service: GenreServiceDep,
    _: AdminCurrentUserDep  # 下划线明确标记返回值无需使用
):
    return await genre_service.create_genre(genre=genre)

内容的提问来源于stack exchange,提问作者Smile1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:43:18