npm包 tsbuf-nestjs 使用教程

阅读时长 7 分钟读完

一、什么是tsbuf-nestjs

tsbuf-nestjs是一个构建于protobuf之上的TypeScript库,它可以让你更便捷地开发Nestjs应用程序。使用tsbuf-nestjs,你可以将protobuf中的定义直接转化为Nestjs的控制器服务层,无需编写繁琐的接口映射代码。从而使得应用程序的开发效率大大提升。

二、如何安装

在使用tsbuf-nestjs之前,你需要先安装它。你可以使用以下命令在你的项目中添加tsbuf-nestjs

三、使用示例

下面让我们看一个tsbuf-nestjs的使用示例。以一个购物车服务为例,我们可以先定义购物车服务的protobuf文件,例如:

-- -------------------- ---- -------
------ - ---------
------- ---------

------- -------------- -
    ------ ------ - --
    ------ ------ - --
    ----- ----- - --
-

------- --------------- -
    ------ ------ - --
    ----- ----- - --
-

------- -------------- -
    ------ ------ - --
-

------- --------------- -
    -------- --------------- -------- - --
-

如果我们不使用tsbuf-nestjs,那么我们需要手动编写Nestjs的控制器代码,从而将这些protobuf映射为控制器接口。例如:

-- -------------------- ---- -------
-----------------------
------ ----- ---------------------- -
    ------------------- -------- -------------------- -------------------- --

    ----------------
    ----- --------------- --------------- ---------------- ------------------------ -
        -- -- ---------
    -

    ---------------
    ----- ---------------- --------------- ---------------- ------------------------ -
        -- -- ---------
    -
-

然而,如果我们使用tsbuf-nestjs,我们就可以将定义好的protobuf直接转化为控制器代码并使用。示例如下:

  • 先定义Nestjs控制器类,并使用注解@TsbufController标记:

    -- -------------------- ---- -------
    ------ - --------------- - ---- ---------------
    ------ - --------------- ---------------- --------------- --------------- - ---- -------------------
    
    ----------------------------
    ------ ----- ---------------------- -
        ------------ ---------------- --------------- -
            ------ - ------- ----------- ------ --------- --
        -
    
        ------------ ---------------- --------------- -
            ------ - --------- -- ------- ---- ------ - -- - ------- ---- ------ - -- --
        -
    -

    上述代码中,我们使用了注解@TsbufController("shopping"),它表示ShoppingCartController控制器类将与protobuf中的shopping包相对应。同时,在ShoppingCartController中,我们定义了两个方法addItemgetCart,这两个方法的参数类型就是protobuf中定义的AddItemRequestAddItemResponseGetCartRequestGetCartResponse

  • 接下来创建Nestjs服务类,并使用注解@TsbufService标记。我们需要引入protobuf中定义的类型,在服务类中定义服务实现方法:

    -- -------------------- ---- -------
    ------ - ------------ - ---- ---------------
    ------ - --------------- ---------------- --------------- --------------- - ---- -------------------
    
    -------------------------
    ------ ----- ------------------- -
        ------- ------ ----------- ---------------------- - --- ------
    
        ------------ ---------------- --------------- -
            ----- ------ - -----------
            --- -------- - -----------------------
            -- ----------- -
                -------- - ---
                ---------------------- ----------
            -
            -------------------
            ------ - ------- ----------- ------ --------- --
        -
    
        ------------ ---------------- --------------- -
            ----- ------ - -----------
            ----- -------- - -----------------------
            -- ----------- -
                ------ - --------- -- --
            -
            ----- --- - - --------- -- --
            --- ------ ---- -- --------- -
                ------------------- ------- ------------ ------ ---------- ---
            -
            ------ ----
        -
    -
  • 在应用启动时,使用TsbufModule注册控制器和服务:

    -- -------------------- ---- -------
    ------ - ------ - ---- -----------------
    ------ - ----------- - ---- ---------------
    ------ - ---------------------- - ---- ------------------------
    ------ - ------------------- - ---- ---------------------
    
    ---------
        -------- --------------
        ------------ -------------------------
        ---------- ----------------------
    --
    ------ ----- --------- --

接下来,就可以启动应用并使用相应的grpc-client调用购物车服务了!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672e30520b171f02e1d97

纠错
反馈