Koa.js 中如何使用 Swagger 进行 API 文档生成

阅读时长 9 分钟读完

在开发前端类的应用时,我们经常需要使用 Web 开发框架来搭建服务端 API,而生成 API 文档则是一个不可避免的任务。在 Koa.js 这样的 Web 框架中,我们可以使用 Swagger 这个工具来方便地生成 API 文档并且提供 API 接口测试的功能。本文将详细介绍在 Koa.js 中使用 Swagger 进行API文档生成的步骤和指引,并提供相应的示例代码。

什么是 Swagger?

Swagger是一个流行的、开源的API文档规范和工具集,它提供了一种描述、生产、消费RESTful web服务的方式,可以帮助开发人员更好地了解API的使用方法,同时也可以辅助开发人员快速构建和测试API接口。Swagger提供的规范称为OpenAPI,它可以让我们专注于实现API逻辑而不是文档编写,提高API开发的效率。

在 Koa.js 中集成 Swagger

使用 Swagger 可以很容易地为你的 API 生成规范和文档,并且支持在浏览器中测试 API 接口。在 Koa.js 中,我们可以使用 swagger-jsdoc 和 swagger-ui-express 这两个库来实现集成。

Step 1: 安装依赖

现在开始,请先打开终端,在你的 Koa.js 项目中输入以下命令,安装 swagger-jsdoc 和 swagger-ui-express 两个库:

Step 2: 编写 常规的 Swagger 文档

随着 Koa.js 项目成长,你会随着时间的推移,编写的代码会逐渐增加。如果不管理 API,代码会变得越来越难维护。这就是 Swagger 发挥作用的地方。

首先,我们需要编写 Swagger 规范,这里使用注释的形式来描述。在项目中新建一个 swagger.json 文件夹,我们在这个目录下面创建一个新的 swagger.yaml 文件,输入以下基本信息:

其中,openapi 是规范版本,info 对象是 API 的基本信息,servers 表示 API 所在的服务器地址。

接下来,我们需要使用 swagger-jsdoc 来解析注释。在项目中新建一个名为 swagger.js 的文件:

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

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

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

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

在上述代码中,我们通过传递文件路径指向路由和模型文件夹,告诉 Swagger 哪些文件需要解析放入文档中。注意,swaggerSpec 导出的内容在下一步中将需要用到。

Step 3: 集成Swagger UI

到此为止,Swagger 规范已经生成了,我们需要将其绑定到 Swagger UI 中。在项目中,我们可以使用 swagger-ui-express 中间件来将 Swagger 规范绑定到 UI 界面上。

在欲使用 Swagger 的 Koa.js 项目中的 app.js 中,进行如下配置:

现在,当你在浏览器中访问 http://localhost:3000/api-docs ,你会看到 Swagger UI 界面。默认情况下,文档中将会显示与 apis: ['./routes/*.js',' ./models/*.js'] 定义在Swagger.js 文件中的路径中的 Route、参数和响应信息的信息。

Step 4: 配置 Swagger 文档

以上,我们的 Koa.js 项目已经和 Swagger 集成完成。然而在 Swagger-UI 中,有很多高级配置可以用来优化接口测试的体验。例如,可以使用 Swagger 的 authorizations 或 securityDefinitions 去验证授权令牌,或者自定义 UI 主题等。

这些高级配置可以在 swagger.yaml 文件中定义,Swagger UI 将此视为可选配置。

在代码中,我们将上面定义的 authorization 定义绑定到 options 对象中:

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

现在,Swagger-UI 将在 UI 面板中提供一个输入字段,接口测试员可以在此输入授权令牌以进行 API 测试。

示例代码

首先,创建一个 Koa.js 项目,运行 npm init -y 自动创建 package.json 文件:

然后,安装 Koa.js、swagger-jsdoc 和 swagger-ui-express:

接下来,创建一个 index.js 文件,并在其中编写相应代码:

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

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

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

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

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

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

现在,我们在项目的根目录中创建 swagger.js 文件,来定义Swagger规范,代码如下所示:

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

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

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

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

现在,所有的配置都已经好了,你可以使用 npm start 命令来启动 Koa.js 服务,并且在浏览器中访问 http://localhost:3000/api-docs ,来查看 Swagger UI 界面。

总结

本文介绍了如何在 Koa.js 中,通过使用 Swagger 工具来帮助我们快速地生成 API 文档并在浏览器中测试 API 接口。在实践中,你可以进一步学习如何自定义自己的 Swagger UI 界面,并且通过 Swagger 的 authorizations 或 securityDefinitions 配置项对授权令牌进行验证。通过使用 Swagger,我们能够大大提高 API 开发的效率,使我们的开发更加顺畅和高效。

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

纠错
反馈