mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-30 12:14:27 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
25 lines
1.8 KiB
Markdown
25 lines
1.8 KiB
Markdown
# REST ルート (api_router)
|
||
|
||
プラグインに HTTP エンドポイントを追加します。フロントエンドコンポーネントのバックエンドとしてよく使われます。`@provider(points.API_ROUTER, id=...)` は `fastapi.APIRouter` を返します。
|
||
|
||
```python
|
||
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`([署名と配布](/ja/dev/plugins/signing) を参照)はルートのパスに使えません。
|