SuperAPI AI 工具集

start-core/middleware

通用与其它

查看项目

更新于 10-16 00:00

技能介绍

用途:Middleware 用于定制服务器函数与服务器路由的行为,可组合成链,中间件之间可相互依赖。

主要能力:分两类。请求中间件用 createMiddleware() 创建,仅 .server(),作用于所有服务器请求(SSR、路由、函数),无输入校验与客户端逻辑。服务器函数中间件用 createMiddleware({ type: 'function' }) 创建,含 .client() 与 .server(),仅作用于服务器函数,支持 .inputValidator()。请求中间件不能依赖服务器函数中间件,反之可以。

用法:方法顺序由 TypeScript 强制为 middleware() → inputValidator() → client() → server(),顺序错误会报类型错误。通过 next({ context }) 沿链传递上下文;sendContext 可在客户端与服务端之间传值。全局中间件在 src/start.ts 用 createStart 配置 requestMiddleware 与 functionMiddleware。可挂到 createServerFn 的 .middleware([...]),也可用于服务器路由的 server.middleware 或单个 handler。中间件工厂可生成带参数的授权中间件。客户端中间件可设置 headers 与自定义 fetch,headers 会合并,后者覆盖前者,调用点覆盖全部。

限制与注意:客户端 sendContext 是不可信输入,校验形状不等于授权,必须结合会话主体重新检查访问权限;会话须来自服务端可信来源。.client() 在 SSR 期间运行于服务端,使用 localStorage、window 等浏览器 API 会抛 ReferenceError,需加 typeof window 判断或改用 cookie/headers。路由 beforeLoad 不保护服务器函数 RPC,受保护路由需在 handler 层配合 authMiddleware。