tRPC 中文网 - Docs - For v10: https://trpc.io/llms-v10.txt - For v9: https://trpc.io/llms-v9.txt ## Documentation Pages - [跨域发送 cookie](/docs/client/cors): 如果你的 API 驻留在与前端不同的源上,并且你希望向其发送 cookie,则你需要在服务器上启用 CORS,并通过提供要获取的选项 {credentials: "include"} 来随你的请求发送 cookie。 - [自定义标头](/docs/client/headers): 使用 httpBatchLink 或 httpLink 时,可以在配置中自定义标头选项。 - [HTTP 批量链接](/docs/client/links/httpBatchLink): httpBatchLink 是一个 终止链接,它将一组单独的 tRPC 操作批处理为发送到单个 tRPC 过程的单个 HTTP 请求。 - [HTTP 批量流链接](/docs/client/links/httpBatchStreamLink): httpBatchStreamLink 是 终止链接,它将一组单独的 tRPC 操作批处理为单个 HTTP 请求,该请求发送到单个 tRPC 过程(相当于 httpBatchLink),但不等待批处理的所有响应准备就绪,并将响应流式传输 一旦有任何数据可用。 - [HTTP 链接](/docs/client/links/httpLink): httpLink 是通过 HTTP 将 tRPC 操作发送到 tRPC 过程的 终止链接。 - [HTTP 订阅链接](/docs/client/links/httpSubscriptionLink): httpSubscriptionLink 是使用 服务器发送事件(SSE)进行订阅的 终止链接。 - [本地链接](/docs/client/links/localLink): 用于直接过程调用且无 HTTP 开销的链接 - [日志器链接](/docs/client/links/loggerLink): loggerLink 是一个链接,可让你为 tRPC 客户端实现日志器。它使你可以更清楚地看到哪些操作是查询、突变或订阅、它们的请求和响应。默认情况下,该链接会将美化的日志打印到浏览器的控制台。但是,你可以使用自己的实现来自定义日志记录行为及其打印到控制台的方式。 - [链接概述](/docs/client/links/overview): 链接使你能够自定义 tRPC 客户端和服务器之间的数据流。链接应该只做一件事,这可以是对 tRPC 操作(查询、突变或订阅)的独立修改,也可以是基于操作的副作用(例如日志记录)。 - [重试链接](/docs/client/links/retryLink): retryLink 是一个链接,允许你在 tRPC 客户端中重试失败的操作。它提供了一种可自定义的方式来处理瞬态错误,例如网络故障或服务器错误,通过根据指定条件自动重试失败的请求。 - [分割链接](/docs/client/links/splitLink): splitLink 是一个链接,允许你根据给定条件对链接链的执行进行分支。true 和 false 分支都是必需的。你可以仅提供一个链接,也可以通过数组为每个分支提供多个链接。 - [WebSocket 链接](/docs/client/links/wsLink): wsLink 是使用 tRPC 的 WebSockets 客户端和订阅时使用的 终止链接,你可以了解有关 此处 的更多信息。 - [中止过程调用](/docs/client/nextjs/aborting-procedure-calls): 默认情况下,tRPC 不会取消卸载请求。如果你想选择此行为,可以在配置回调中提供 abortOnUnmount。 - [Next.js 集成](/docs/client/nextjs/introduction): tRPC ❤️ Next.js - [服务器端助手](/docs/client/nextjs/server-side-helpers): 服务器端辅助程序为你提供了一组辅助程序函数,你可以使用它们在服务器上预取查询。这对于 SSG 很有用,如果你选择不使用 ssr: true,那么对于 SSR 也很有用。 - [使用 Next.js Pages Router 设置](/docs/client/nextjs/setup): 本指南适用于 Next.js Pages Router。如果你正在使用带有 React Server 组件的 Next.js App Router,请查看 RSC 文档 - [静态站点生成](/docs/client/nextjs/ssg): 参考项目:https://github.com/trpc/examples-next-prisma-todomvc - [服务器端渲染](/docs/client/nextjs/ssr): 要启用 SSR,只需在 createTRPCNext 配置回调中设置 ssr: true 即可。 - [入门项目](/docs/client/nextjs/starter-projects): 快速开始使用示例项目之一!从下面列表中的 create-next-app 快速入门中复制代码片段以克隆项目。 - [客户端概览](/docs/client/overview): 虽然可以像任何其他 REST API 一样使用普通 HTTP 请求来调用 tRPC API,但你需要一个客户端才能从 tRPC 的类型安全性中受益。 - [中止过程调用](/docs/client/react/aborting-procedure-calls): 默认情况下,tRPC 不会通过 React Query 取消请求。如果你想选择此行为,你可以在配置中提供 abortOnUnmount。 - [createTRPCQueryUtils](/docs/client/react/createTRPCQueryUtils): createTRPCQueryUtils 的用例是当你需要在 React 组件之外使用辅助程序时,例如在 react-router 加载器中。 - [禁用查询](/docs/client/react/disabling-queries): 要禁用查询,你可以将 skipToken 作为第一个参数传递给 useQuery 或 useInfiniteQuery。这将阻止查询的执行。 - [getQueryKey](/docs/client/react/getQueryKey): 我们提供了一个接受 router 或 procedure 的 getQueryKey 辅助程序,以便你可以轻松地向原生函数提供正确的查询键。 - [推断类型](/docs/client/react/infer-types): 除了 @trpc/server (看这里) 提供的类型推断之外,此集成还提供了一些纯粹在 React 中使用的推断助手。 - [React Query Integration(经典版)](/docs/client/react/introduction): React 查询集成 - [使用 React 服务器组件设置](/docs/client/react/server-components): 这些是我们 '经典' React Query 集成的文档,虽然仍然受支持,但这不是使用 TanStack React Query 启动新 tRPC 项目的推荐方式。我们建议改用新的 TanStack React Query 集成。 - [设置 React 查询集成](/docs/client/react/setup): 如何在 React 中使用和设置 tRPC - [Suspense](/docs/client/react/suspense): * 确保你使用的是最新版本的 React - [useInfiniteQuery](/docs/client/react/useInfiniteQuery): * 你的过程需要接受任何类型(string、number 等)的 cursor 输入才能公开此钩子。 - [useMutation()](/docs/client/react/useMutation): @trpc/react-query 提供的钩子是 @tanstack/react-query 的薄封装。有关选项和使用模式的深入信息,请参阅 mutations 上的文档。 - [useQueries()](/docs/client/react/useQueries): useQueries 钩子可用于仅使用一个钩子调用同时获取可变数量的查询。 - [useQuery()](/docs/client/react/useQuery): useQuery 是数据获取的主要钩子,它的工作方式与 @tanstack/react-query 的 useQuery 类似,但具有一些 trpc 特定的选项和流式传输等附加功能。 - [useSubscription()](/docs/client/react/useSubscription): useSubscription 钩子可用于订阅服务器上的 subscription 过程。 - [useUtils](/docs/client/react/useUtils): useUtils 是一个钩子,可让你访问辅助程序,让你管理通过 @trpc/react-query 执行的查询的缓存数据。这些助手实际上是 @tanstack/react-query 的 queryClient 方法的薄封装。如果你想了解比我们此处提供的更多关于 useContext 辅助程序的选项和使用模式的深入信息,我们将链接到它们各自的 @tanstack/react-query 文档,以便你可以相应地参考它们。 - [从经典 React Client 迁移](/docs/client/tanstack-react-query/migrating): 从经典 React Client 迁移 - [使用 React 服务器组件设置](/docs/client/tanstack-react-query/server-components): 本指南概述了如何将 tRPC 与 React Server Components (RSC) 框架(例如 Next.js App Router)结合使用。请注意,RSC 本身解决了许多与 tRPC 旨在解决的问题相同的问题,因此你可能根本不需要 tRPC。 - [TanStack React Query](/docs/client/tanstack-react-query/setup): TanStack React Query 设置 - [TanStack React Query](/docs/client/tanstack-react-query/usage): TanStack React Query 用法 - [中止过程调用](/docs/client/vanilla/aborting-procedure-calls): tRPC 在中止过程方面遵循行业标准。你所要做的就是将 AbortSignal 传递给查询或突变选项,并在需要取消请求时调用 AbortController 实例的 abort 方法。 - [推断类型](/docs/client/vanilla/infer-types): 在客户端中访问 API 类型通常很有用。为此,你可以推断 AppRouter.h 中包含的类型。 - [tRPC 客户端](/docs/client/vanilla/introduction): trpc-client} - [设置 tRPC 客户端](/docs/client/vanilla/setup): 1. 安装 tRPC 客户端库 - [很棒的 tRPC 集合](/docs/community/awesome-trpc): tRPC 上的资源集合。 - [贡献](/docs/community/contributing): - [感言/爱](/docs/community/love): - [赞助商](/docs/community/sponsors): - [常见问题解答/故障排除](/docs/further/faq): 常见问题的收集以及有关如何排除故障和解决这些问题的想法。 - [进一步阅读](/docs/further/further-reading): 这是给谁的? - [HTTP RPC 规范](/docs/further/rpc): 方法 \ 类型映射 - [Step1](/docs/landing-intro/Step1): - [Step2](/docs/landing-intro/Step2): - [Step3](/docs/landing-intro/Step3): - [概念](/docs/main/concepts): 什么是 RPC?我应该采取什么心态? - [示例应用](/docs/main/example-apps): 使用 tRPC 构建的示例应用 - [入门](/docs/main/getting-started): 快速浏览一下 tRPC - [远程过程调用](/docs/main/introduction): End-to-end typesafe APIs made easy - [快速开始](/docs/main/quickstart): 了解如何快速入门和设置 tRPC - [视频和社区资源](/docs/main/videos-and-community-resources): 马特·波考克:5 分钟学会 tRPC - [从 v10 迁移到 v11](/docs/migration/migrate-from-v10-to-v11): 从 v10 迁移到 v11 - [适配器](/docs/server/adapters-intro): tRPC 本身并不是一个服务器,因此必须使用其他主机提供服务,例如简单的 Node.js HTTP 服务器、Express 甚至 Next.js。无论你选择哪个后端,大多数 tRPC 功能都是相同的。适配器充当主机系统和 tRPC API 之间的粘合剂。 - [AWS Lambda + API 网关适配器](/docs/server/adapters/aws-lambda): AWS Lambda 适配器 - [Express 适配器](/docs/server/adapters/express): 示例应用 - [Fastify 适配器](/docs/server/adapters/fastify): 示例应用 - [获取/边缘运行时适配器](/docs/server/adapters/fetch): 你可以在遵循 WinterCG(特别是 最低通用 Web 平台 API 规范)的任何边缘运行时中创建 tRPC 服务器。 - [Next.js 适配器](/docs/server/adapters/nextjs): tRPC 对 Next.js 的支持远不止是一个适配器。本页简要介绍了如何设置适配器,但完整的文档是 可以在这里找到 - [独立适配器](/docs/server/adapters/standalone): tRPC 的独立适配器是让新项目运行的最简单方法。它非常适合本地开发和基于服务器的生产环境。本质上,它只是标准 Node.js HTTP 服务器 的封装,包含与 tRPC 相关的常规选项。 - [授权](/docs/server/authorization): 每个传入请求都会调用 createContext 函数,因此你可以在此处从请求对象添加有关调用用户的上下文信息。 - [响应缓存](/docs/server/caching): 以下示例使用 Vercel 的边缘缓存 尽快向你的用户提供数据。 - [上下文](/docs/server/context): 你的上下文保存所有 tRPC 过程都可以访问的数据,并且是放置数据库连接或身份验证信息等内容的好地方。 - [数据转换器](/docs/server/data-transformers): 你可以序列化响应数据和输入参数。转换器需要添加到服务器和客户端。 - [格式错误](/docs/server/error-formatting): 路由中的错误格式将一直推断到你的客户端(和 React 组件) - [错误处理](/docs/server/error-handling): 每当过程中发生错误时,tRPC 都会使用包含 "error" 属性的对象响应客户端。该属性包含处理客户端错误所需的所有信息。 - [合并路由](/docs/server/merging-routers): 将代码中的所有 API 代码写入同一个文件中并不是一个好主意。将路由与其他路由合并很容易。 - [元数据](/docs/server/metadata): 过程元数据允许你添加可选的过程特定 meta 属性,该属性将在所有 中间件 函数参数中可用。 - [中间件](/docs/server/middlewares): 你可以使用 t.procedure.use() 方法将中间件添加到过程中。中间件将封装过程的调用,并且必须传递其返回值。 - [非 JSON 内容类型](/docs/server/non-json-content-types): 除了 JSON 序列化数据外,tRPC 还可以使用 FormData、File 和其他二进制类型作为过程输入。 - [定义过程](/docs/server/procedures): 过程是暴露给客户端的函数,它可以是以下之一: - [定义路由](/docs/server/routers): 要开始构建基于 tRPC 的 API,你首先需要定义路由。一旦掌握了基础知识,你就可以了解更高级的用例。 - [服务器端调用](/docs/server/server-side-calls): 你可能需要直接从托管的同一服务器调用你的过程,可以使用 createCallerFactory() 来实现此目的。这对于服务器端调用和 tRPC 过程的集成测试非常有用。 - [订阅](/docs/server/subscriptions): 介绍 - [输入和输出验证器](/docs/server/validators): tRPC 过程可以为其输入和/或输出定义验证逻辑,验证器也用于推断输入和输出的类型(如果可用,则使用 标准架构 接口;如果不可用,则使用受支持验证器的自定义接口)。我们为许多流行的验证器提供一流的支持,你可以 集成验证器 我们不直接支持。 - [WebSockets](/docs/server/websockets): 你可以将 WebSockets 用于与服务器的全部或部分通信,请参阅 wsLink 了解如何在客户端上进行设置。