Files
Auto_Bangumi/docs/dev/plugins/points/api-router.md
Estrella Pan 3258fcca4b docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
2026-10-08 14:51:00 +02:00

1.2 KiB
Raw Blame History

REST 路由(api_router)

给插件增加 HTTP 接口,常用于前端组件的后端。@provider(points.API_ROUTER, id=...) 返回 fastapi.APIRouter。

from fastapi import APIRouter

@provider(points.API_ROUTER, id="api")
def api(self):
    router = APIRouter()

    @router.get("/stats")
    async def stats():
        return {"count": await self.ctx.kv.get("count", 0)}

    return router
  • 路由挂载在 /api/v1/plugins/<插件 id>/ 下,上例为 GET /api/v1/plugins/my-plugin/stats。id 只需在插件内唯一。
  • 所有插件路由都强制登录鉴权,与 WebUI 其它接口使用同一套凭据(会话 Cookie 或 scope=api 的 API 令牌)。插件无法注册匿名端点,未登录返回 401。
  • 路由随插件启用出现、随停用消失,无需重启。同一插件可以提供多个 API_ROUTER,合并到同一前缀下。
  • 处理函数抛出 HTTPException 返回对应状态码;抛出其它异常返回 500,并计入熔断。
  • 插件路由不出现在 /docs 里。
  • 保留路径:web/(前端静态资源)、install、catalog(见 签名与分发)不能用作路由路径。