SuperAPI AI 工具集

server-functions

编程与开发

查看项目

更新于 10-15 23:56

技能介绍

用途:Server Functions 是 TanStack Start 中通过 createServerFn 创建的类型安全 RPC,只在服务端执行,但可从 loader、组件、Hook、事件处理器或其他服务端函数调用,用于把数据库查询、文件系统访问、密钥等仅服务端逻辑集中封装。

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

使用方式:用 createServerFn({ method: 'POST' }).validator(...).handler(async ({ data }) => {...}) 定义;在 loader 中直接调用;在组件事件中用 useServerFn 包装后调用;写入后可用 router.invalidate({ sync: true }) 使路由缓存失效。文件组织建议 users.functions.ts 放包装、users.server.ts 放仅服务端逻辑、schemas.ts 放共享校验。

限制与注意:服务端函数是 API 端点,鉴权必须在 handler 或 middleware 内强制,路由 beforeLoad 只是 UX;loader 是同构的,不能直接放数据库或密钥;不要使用 "use server"、getServerSideProps 或 Next.js/Remix 模式;避免动态导入服务端函数、忘记调用函数、对鉴权响应使用 Cache-Control: public;使用 throw redirect/notFound 时需用 useServerFn 包装;不要在 loader 中自请求相对 API URL。