SuperAPI AI 工具集

trpc

编程与开发

查看项目

更新于 10-15 17:28

技能介绍

用途:tRPC 用于在 TypeScript 客户端与服务端之间实现端到端类型安全,定义一次 API 即可在各处获得自动类型推断,无需代码生成。适合全栈 TypeScript 应用(如 Next.js、T3 栈)、客户端与服务端共享 TypeScript 代码库的项目、使用 React Query 取数的应用,以及可同时控制客户端与服务端的内部 API。不适合由非 TypeScript 客户端消费的公共 API、跨语言微服务、使用 Swift/Kotlin 的移动应用,或需要为外部开发者提供 API 文档(此类场景可用 REST/GraphQL,OpenAPI 更合适)。

主要能力:Router 为 procedure 集合(API 端点);Procedure 为单个 API 操作,分为 query(读取,GET,可被 React Query 缓存,幂等)与 mutation(写入,POST,不缓存);使用 Zod 进行输入校验与输出校验(输出校验有运行时开销,建议仅用于关键数据);支持上下文(请求级数据,如 session、数据库连接)与中间件(日志、耗时、鉴权、限流等横切关注点);支持嵌套路由与 mergeRouters 合并;错误通过 TRPCError 及标准错误码处理,并可自定义 errorFormatter;还涉及 React Query 集成、Next.js App Router 集成、实时订阅、文件上传、批量请求与 Data Loaders、TypeScript 推断模式、测试策略、生产模式、与 REST/GraphQL 对比及从 REST 迁移等主题。

使用方式:服务端安装 npm install @trpc/server zod,React/Next.js 客户端安装 npm install @trpc/client @trpc/react-query @tanstack/react-query。服务端用 initTRPC.create() 创建实例并定义 appRouter,导出 AppRouter 类型;客户端用 createTRPCReact<AppRouter>() 创建调用器,在组件中使用 trpc.hello.useQuery({ name: 'World' }) 与 trpc.createPost.useMutation()。

限制:仅适用于 TypeScript 全栈场景;公共 API、多语言微服务或非 TypeScript 客户端消费的接口应改用 REST/GraphQL。其余具体细节资料暂未提供。