You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.4 KiB
1.4 KiB
模块协议
模块是同一个 FastAPI 进程内的业务边界。 它不是独立服务。
注册
from iti import create_app
from my_app.modules.example import ExampleModule
app = create_app(modules=[ExampleModule()])
模块类
class ExampleModule:
name = "example"
def init_app(self, app):
pass
def register_routes(self, app):
app.include_router(router)
def register_permissions(self, app):
pass
def register_menu_seed(self, app):
pass
def register_tasks(self, app):
pass
执行顺序:
init_appregister_tasksregister_routesregister_permissionsregister_menu_seed
路由
使用 FastAPI 原生 APIRouter。
from fastapi import APIRouter
from iti.responses import ok
router = APIRouter(prefix="/example", tags=["example"])
@router.get("/ping")
def ping():
return ok({"pong": True})
权限元数据
from iti.modules import ModulePermission
def register_permissions(self, app):
app.state.iti_modules.register_permission(
ModulePermission("example:item:list", "示例列表")
)
框架负责收集元数据。
具体授权由 PermissionProvider 决定。
单独使用 iti-flask 时可注入自己的 provider。
使用 iti-system 时由系统包提供数据库 provider。