> ## Documentation Index
> Fetch the complete documentation index at: https://tegg.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Tegg HTTP 请求生命周期（端到端）

<p align="center">
  <img src="https://mintcdn.com/tegg/NJD9IpokOUU5-uQ5/img/request-lifecycle.svg?fit=max&auto=format&n=NJD9IpokOUU5-uQ5&q=85&s=8a36b537765c72de1be2d7a64b93eac4" alt="Tegg HTTP 请求生命周期图" width="960" data-path="img/request-lifecycle.svg" />
</p>

上述配套图展示一次 HTTP 请求自路由命中、参数装配、容器解析控制器实例、方法调用到返回的全链路流程。

## 1. 路由注册与命中

* 路由在加载阶段由控制器元数据注册到框架路由表，包含 method/path/host 以及控制器与方法绑定信息。
* 命中时，路由层创建 handler 并将请求和上下文交由该 handler 处理。

## 2. Handler 参数装配与中间件

* 根据控制器和方法上的装饰器（如 @HTTPBody/@HTTPParam/@HTTPQuery/@HTTPHeaders/@Cookies/@Request/@Context 等）解析参数来源并装配调用参数。
* 先后执行控制器级与方法级中间件（若有），校验、鉴权或其他横切逻辑。

## 3. 容器解析控制器实例

* Handler 通过容器工厂按原型与限定信息解析控制器实例（getOrCreateEggObject）。
* 按原型的生命周期策略（SINGLETON/CONTEXT/ALWAYS\_NEW）与依赖注入规则，创建或复用实例，执行必要的生命周期钩子。

## 4. 执行控制器方法

* 组装参数后调用真实对象的方法（Reflect.apply(realMethod, realObj, args)）。
* 方法返回值根据框架约定写入响应（JSON/流/状态码等）。

## 5. 元数据与契约对照

* ControllerMetadata/MethodMeta：来源于装饰器收集，驱动路由注册、参数装配和中间件绑定。
* EggPrototype/LoadUnit：标识类所属模块与原型，影响容器解析与实例查找。
* LifecycleHook：约束对象创建/销毁前后逻辑，容器在合适时机调用。

## 6. 故障与可观测性

* 在任何阶段发生错误，按统一错误处理流程转换为 HTTP 响应（含状态码和错误体），并打点记录关键阶段耗时与错误。

## 7. 对应源码线索

* 路由注册/控制器元数据：plugin/controller/\* 目录（ControllerRegister/HTTPMethodRegister 等）。
* 容器解析与对象实例：core 下容器与原型相关实现（EggContainerFactory/EggPrototype 等）。
* 装饰器与方法元数据：core/types 与相关 decorator 定义位置。

如需我把上面每个点补充为“源码精确链接 + 行号索引”，请告知，我将继续补充。
