mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-29 11:46:17 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
1.8 KiB
1.8 KiB
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(署名と配布 を参照)はルートのパスに使えません。