SuperAPI AI 工具集

start-core/server-functions

编程与开发

查看项目

更新于 10-16 00:00

技能介绍

用途:在 TanStack Start 中用 createServerFn 创建类型安全的 RPC 服务端函数,代码只在服务端执行,但可从 loader、组件、hook、事件处理器或其他服务端函数调用。

主要能力:支持 GET(默认)与 POST 方法;用 inputValidator 做输入校验,可传普通函数或 Zod schema,也可处理 FormData;用 useServerFn hook 在事件处理器中调用;服务端上下文工具包括 getRequest、getRequestHeader、setResponseHeader、setResponseHeaders、setResponseStatus;支持抛出错误、redirect 与 notFound。

使用方式:从 @tanstack/react-start 导入 createServerFn,链式调用 .inputValidator() 与 .handler()。在 loader 中直接调用;在组件事件处理器中用 useServerFn 包装后调用。文件组织建议:.functions.ts 放 createServerFn 包装(可安全静态导入),.server.ts 放仅服务端辅助逻辑,schemas.ts 放共享校验 schema。静态导入服务端函数是安全的,构建时会在客户端包中替换为 RPC 桩。

限制与注意:服务端函数是 RPC 端点,可被直接 POST 访问,路由 beforeLoad 守卫不能保护它,必须在 handler 内或通过 middleware 强制鉴权;loader 是同构的,数据库查询、文件系统访问和密钥必须放进 createServerFn;不要使用 "use server"、getServerSideProps 或 Next.js/Remix 模式;避免动态导入服务端函数;调用时需加括号;鉴权响应不可用 Cache-Control: public,应使用 private 或 no-store 并设置 Vary;当函数抛出 redirect 或 notFound 时必须用 useServerFn 包装。