Expand description
e-cat 集成。
e-cat 的 HTTP 传输层是 axum,中间件层是 tower 的 Layer/Service,
用 tower::ServiceBuilder 组装。它没有自己的「中间件 trait」,所以这里
就是一个标准的 tower 层:把 Guard 塞进请求扩展,处理器用
Extension<Guard> 取出来。
use encryption::guard::Guard;
use encryption::integrations::ecat::GuardLayer;
use tower::ServiceBuilder;
let guard: Guard = todo!();
let middleware = ServiceBuilder::new().layer(GuardLayer::new(guard));§为什么这不只是「给 e-cat 用的」
它是一个不依赖 e-cat 的普通 tower 层 —— e-cat 只是把它接进来的那个框架。
与 e-cat 自身的 ecat-middleware::ValidateLayer 是同一个形状,可以并排
放进同一个 ServiceBuilder。
§为什么不必装箱
这一层不改写响应、不改写错误,只是往请求里塞一个 Extension,所以
type Future = S::Future —— 直接透传内层的 future,没有 Pin<Box<dyn ...>>,
也没有 futures 依赖。
Structs§
- Guard
Layer - 把
Guard注入每个请求扩展的 tower 层。 - Guard
Service GuardLayer产出的服务。