一、什么是tsbuf-nestjs
tsbuf-nestjs
是一个构建于protobuf
之上的TypeScript
库,它可以让你更便捷地开发Nestjs
应用程序。使用tsbuf-nestjs
,你可以将protobuf
中的定义直接转化为Nestjs
的控制器服务层,无需编写繁琐的接口映射代码。从而使得应用程序的开发效率大大提升。
二、如何安装
在使用tsbuf-nestjs
之前,你需要先安装它。你可以使用以下命令在你的项目中添加tsbuf-nestjs
:
npm install tsbuf-nestjs --save
三、使用示例
下面让我们看一个tsbuf-nestjs
的使用示例。以一个购物车服务为例,我们可以先定义购物车服务的protobuf
文件,例如:
-- -------------------- ---- ------- ------ - --------- ------- --------- ------- -------------- - ------ ------ - -- ------ ------ - -- ----- ----- - -- - ------- --------------- - ------ ------ - -- ----- ----- - -- - ------- -------------- - ------ ------ - -- - ------- --------------- - -------- --------------- -------- - -- -
如果我们不使用tsbuf-nestjs
,那么我们需要手动编写Nestjs
的控制器代码,从而将这些protobuf
映射为控制器接口。例如:
-- -------------------- ---- ------- ----------------------- ------ ----- ---------------------- - ------------------- -------- -------------------- -------------------- -- ---------------- ----- --------------- --------------- ---------------- ------------------------ - -- -- --------- - --------------- ----- ---------------- --------------- ---------------- ------------------------ - -- -- --------- - -
然而,如果我们使用tsbuf-nestjs
,我们就可以将定义好的protobuf
直接转化为控制器代码并使用。示例如下:
先定义
Nestjs
控制器类,并使用注解@TsbufController
标记:-- -------------------- ---- ------- ------ - --------------- - ---- --------------- ------ - --------------- ---------------- --------------- --------------- - ---- ------------------- ---------------------------- ------ ----- ---------------------- - ------------ ---------------- --------------- - ------ - ------- ----------- ------ --------- -- - ------------ ---------------- --------------- - ------ - --------- -- ------- ---- ------ - -- - ------- ---- ------ - -- -- - -
上述代码中,我们使用了注解
@TsbufController("shopping")
,它表示ShoppingCartController
控制器类将与protobuf
中的shopping
包相对应。同时,在ShoppingCartController
中,我们定义了两个方法addItem
和getCart
,这两个方法的参数类型就是protobuf
中定义的AddItemRequest
、AddItemResponse
、GetCartRequest
和GetCartResponse
。接下来创建
Nestjs
服务类,并使用注解@TsbufService
标记。我们需要引入protobuf
中定义的类型,在服务类中定义服务实现方法:-- -------------------- ---- ------- ------ - ------------ - ---- --------------- ------ - --------------- ---------------- --------------- --------------- - ---- ------------------- ------------------------- ------ ----- ------------------- - ------- ------ ----------- ---------------------- - --- ------ ------------ ---------------- --------------- - ----- ------ - ----------- --- -------- - ----------------------- -- ----------- - -------- - --- ---------------------- ---------- - ------------------- ------ - ------- ----------- ------ --------- -- - ------------ ---------------- --------------- - ----- ------ - ----------- ----- -------- - ----------------------- -- ----------- - ------ - --------- -- -- - ----- --- - - --------- -- -- --- ------ ---- -- --------- - ------------------- ------- ------------ ------ ---------- --- - ------ ---- - -
在应用启动时,使用
TsbufModule
注册控制器和服务:-- -------------------- ---- ------- ------ - ------ - ---- ----------------- ------ - ----------- - ---- --------------- ------ - ---------------------- - ---- ------------------------ ------ - ------------------- - ---- --------------------- --------- -------- -------------- ------------ ------------------------- ---------- ---------------------- -- ------ ----- --------- --
接下来,就可以启动应用并使用相应的grpc-client
调用购物车服务了!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672e30520b171f02e1d97