Skip to content

Controller

Controller 模块提供协议无关的 MVC / 路由抽象。它不直接绑定 HTTP,而是由下游框架实现 Action 注解、上下文、路由匹配与参数转换。

核心抽象

  • ActionContext:保存用户、运行时异常、返回结果与自定义属性。
  • Router:根据上下文寻找并执行 Action。
  • ActionInvoker:调用具体 Action 方法。
  • ProcessProvider:创建前置、后置或异常处理过程。
  • ProcessFilter:决定某个处理过程是否对 Controller / Action 生效。
  • ControllerLoader:扫描控制器并构建根路由。

通用注解

kotlin
@Path("users")
class UserController {
    @Before(weight = 10)
    fun authenticate() = Unit

    @Catch(error = IllegalArgumentException::class)
    fun onBadRequest(error: IllegalArgumentException) = Unit
}

@Before@After@Catch 支持 weightonlyexcept@Global 将过程提升到全局范围。

自定义过程注解

kotlin
@ProcessBy(ChannelProcess::class)
annotation class Channel(val value: String)

通过 @ProcessBy,下游模块可以把业务注解映射为 ProcessProvider@ProcessFilterBy 则为过程增加条件判断。

返回流程控制

  • 抛出 ActionResult(value) 可中止后续调用并直接设置结果。
  • DoNoneSkipMe 是供下游处理流程约定使用的特殊标记。

INFO

仓库中的 simple 包提供通用反射调用实现,dss 包提供动静分离路由的技术验证实现。Controller 模块本身更适合作为上层 Web、RPC 或消息处理框架的基础。

基于 Apache License 2.0 发布