npm 包 objection-swagger 使用教程

阅读时长 9 分钟读完

前言

随着 Web 应用越来越复杂,后台的数据结构也越来越庞大,人工维护代码文档往往变得异常繁琐。Swagger 是一种非常流行的 API 文档生成工具,同时也是一种 API 客户端调用工具。在 Node.js 后端开发过程中,常常会用到 knex 和 objection 等数据库客户端。objection-swagger 就是针对 objection 数据库提供的一个 NPM 包,可以根据我们定义的 objection 模型,自动生成 swagger 文档。

前置条件

  • Node.js 版本 v8.16.0 及以上;
  • 使用 objection 或 knex.js。

安装

你可以直接使用 npm 进行安装,并把成果应用在你的 application 中:

生成标注

为了使用 Swagger 能够描述模型,我们需要为模型添加详细的标注。下面是一些基础标注的示例:

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

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

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

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

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

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

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

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

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

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

        ----- -

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

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

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

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

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

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

在上述代码中,我们可以看到,我们定义了一些 objection 模型的基本信息。其中包括了表名、jsonSchema 验证、关联关系等信息。

生成 Swagger 文档

继承完 objection 框架之后,我们需要安装 swagger-routes-express 作为路由插件的基础,然后通过 objection-swagger 自动生成 swagger 文档。代码示例如下:

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

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

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

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

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


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

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

在上述代码中,我们使用 express 注册了 swagger-ui-express,并通过 objection-swagger 自动生成了 swagger 文档。这里我们需要注意的是,我们需要通过 Model.knex() 注册我们的 objection.js 模型,在项目中使用需要确保数据库连接已经建立。

生成的 Swagger 文档

最后,我们进入 localhost:3000/docs 后,可以看到自动生成的 Swagger 文档,其中包括了模型、验证、查询、删除等相关信息。整个流程如下所示:

结语

本文介绍了如何使用 objection-swagger 自动生成 swagger 文档,以及如何在 express 路由中使用。如果你想要更加深入地了解 Swagger、objection-swagger 相关的内容,可以参考相关文档进行研究。

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