Files
Auto_Bangumi/docs/ja/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.8 KiB
Raw Permalink 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 を返します。
  • ルートは、プラグインを有効にすると現れ、無効にすると消えます。再起動は不要です。1 つのプラグインが複数の API_ROUTER を提供でき、AB は同じプレフィックスの下にまとめます。
  • ハンドラーが HTTPException を送出すると、そのステータスコードを返します。それ以外の例外は 500 を返し、ブレーカーに数えられます。
  • プラグインのルートは /docs の OpenAPI ドキュメントには表示されません。
  • 予約パス:web/(フロントエンドの静的ファイル)、install、catalog(署名と配布 を参照)はルートのパスに使えません。