文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

tRPC库简介及其在演示项目中的应用解析

2024-11-29 20:39

关注

审校 | 重楼

在近期关注的技术趋势中,一种名为tRPC的技术架构引起了我的注意,它被广泛应用于包括T3在内的多种现代技术堆栈中。然而,对于tRPC的本质及其广受欢迎的原因,我并不清楚。

我开始研究和学习它。我不知道它的意思或目的是什么。所以,我深入研究了RPC、gRPC和其他技术来寻找答案。

我发现tRPC是一种用于设计API的类型安全架构风格。但该定义只是冰山一角,仅仅揭示了其深层内涵的一小部分。

在本文中,我期望能够更为深入地探究这座冰山的根源所在,明晰 tRPC 究竟是何种事物。本文针对 tRPC 展开了深度阐释,涵盖了我们为何需要它以及如何对其进行使用等方面。

请注意,作为这篇文章的撰写者,我是基于自身已有的研究成果,首次与你一同探究tRPC。此次探索主要面向初学者及新学者,现在就让我们一同深入其中。

先决条件

你可以在此处找到本文的GitHub库和所有其他资源。

目录

什么是tRPC?

tRPC是一个基于TypeScript的类型安全库,它利用RPC API设计来处理API请求并交付响应。

RPC代表远程过程调用。我们的tRPC建立在RPC之上。RPC是一种设计API(如REST)的架构风格。使用RPC,你可以摆脱Fetch和REST API。

顾名思义,tRPC在RPC架构设计上添加了一个类型安全层。传统上,我们使用REST API。它包含GET、POST、PULL等请求类型。在tRPC中,没有请求类型。

每个对tRPC后端的请求都会通过查询系统,并根据输入和查询从tRPC后端获得响应。

相反,tRPC和react-query提供了内置函数来处理你的请求。每个请求都会得到相同的处理。这取决于API端点是否接受输入、输出、修改等。

使用REST时,你会创建一个名为/api 的主文件夹,并在其中创建路由文件。但对于tRPC,你不需要包含许多文件的文件夹。你只需要几个内置函数和一个简化的react-query(反应查询)系统。

你无需使用fetch()、处理输出等。tRPC使用表示特定查询的URL进行操作,你将很快会看到。

为什么我们需要tRPC?

tRPC确保RPC类型的安全。这表示客户端无法向服务器发送与其预期不匹配的数据类型。例如,客户端无法为基于数字的属性传递字符串。

如果客户端尝试这样做,系统将立即返回错误提示-无效类型。若数据类型不匹配,集成开发环境(IDE)和浏览器将同步抛出错误。

类型安全是确保JavaScript应用程序稳定性和可靠性的关键要素。tRPC框架正是利用TypeScript的强类型特性,极大地简化了后端路由的创建和操作执行过程。

tRPC的实现依赖于名为Zod的库。它为构建每个路由的数据模式提供了支持。所谓模式,是定义了属性且链接到每个属性的等效数据类型的对象。

例如,在需要用户详细信息的API路由中,开发人员将在后端定义一个对象,并利用Zod为该对象的每个属性指定相应的数据类型。

在前端,tRPC负责验证用户或API请求所提供的数据是否与后端注册的数据类型相匹配,从而在前端和后端之间实现了类型安全的集成。

接下来,我们将探讨tRPC、Zod以及其他相关库如何在演示项目中协同工作,以实现这一类型安全的集成。

如何使用tRPC

tRPC提供了一种高效的方式来快速搭建Express服务器并开发tRPC路由和查询。其简洁的API设计使得开发过程变得直观且易于上手。

在传统的Wb应用架构中,客户端(前端)和服务器端(后端)通常是分离的。本文示例将遵循这种架构模式,分别构建前后端系统。

让我们首先使用React创建客户端,使用Express+CORS创建服务器端来连接它们。

文件夹结构

首先,创建一个名为tRPC Demo的主目录。在该主目录中,再创建另一个名为trpclibrary的子目录,用于分离客户端和服务器端代码,并为后续作为统一库进行管理做准备。

在trpclibrary目录中,你将很快放置服务器端(Express)和客户端(React)的代码。

在tRPC Demo根目录中,插入带有以下代码的package.json文件,作用是连接所有的子文件夹,并允许通过单一命令同时运行客户端和服务器端。

{
"name": "trpclibrary",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"private": true,
"scripts": {
"start": "concurrently \"wsrun --parallel start\""
},
"workspaces": [
"trpclibrary}

{}

);

现在,你将使用React Query打包AppComponent组件,并在该文件中传递你通过调用QueryClient( )创建的React Query客户端实例。然后,你将利用tRPC Provider打包React Query Provider。

The tRPC Provider 需要React Query客户端和带有Base URL的tRPC客户端。因此,我们也将提供该信息。

一旦你传递了所需信息并确保代码与我们的代码相匹配,你就可以访问http://localhost:3000并查看输出。该页面将显示你通过hello API端点传递的数据。

注意:你应该在tRPC Demo目录下运行yarn start命令,打开localhost端口以查看输出结果。

输出图像

我们已经准备就绪。tRPC允许我们从前端调用hello API端点。它优先考虑类型安全,并采用TypeScript来避免数以百万计的其他JavaScript可能带来的问题。

你可以在Route处理程序中添加更多路由和API端点,比如hello。这就像给对象添加新属性一样简单。tRPC就是这样让你的开发工作变得更加轻松。

结论

tRPC是一个类型安全的RPC样式库。它将RPC与TypeScript深度集成,旨在消除REST、fetch( )和其他创建和调用API的技术所带来的问题。

它作为REST和Fetch的替代方案。我将在可预见的未来继续使用它。

译者介绍

刘涛,51CTO社区编辑,某大型央企系统上线检测管控负责人。

文章What is the tRPC Library? Explained with a Demo Project (freecodecamp.org),作者:Afan Khan

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯