Router — 路由组件
BaseRouter 为插件提供基于 FastAPI 的 HTTP 路由能力。
类属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | str | "" | 路由名称 |
description | str | "" | 描述 |
custom_route_path | `str | None` | None |
cors_origins | `list[str] | None` | None |
dependencies | list[str] | [] | 组件级依赖 |
必须实现
register_endpoints() -> None
在该方法内通过 self.app 注册接口。
其他方法
| 方法 | 说明 |
|---|---|
get_route_path() -> str | 返回挂载路径(自定义路径或默认 /router/{name}) |
get_app() -> FastAPI | 返回内部 FastAPI 应用实例 |
startup() / shutdown() | 路由挂载/卸载钩子,可重写以初始化或清理资源 |
get_openapi_schema() -> dict | 获取 OpenAPI schema |
get_signature() -> str | None | 类方法,返回 "plugin_name:router:name" |
示例
python
from fastapi import HTTPException
from pydantic import BaseModel
from src.core.components.base.router import BaseRouter
class WebhookPayload(BaseModel):
event: str
data: dict
class WebhookRouter(BaseRouter):
name = "webhook"
description = "Webhook 接收"
custom_route_path = "/api/webhook"
cors_origins = ["*"]
def register_endpoints(self) -> None:
@self.app.post("/github")
async def github_webhook(payload: WebhookPayload):
if payload.event not in {"push", "pull_request"}:
raise HTTPException(status_code=400, detail="不支持的事件")
return {"ok": True, "event": payload.event}
@self.app.get("/health")
async def health():
return {"status": "ok"}默认挂载路径示例:/router/webhook。
