npm 包 @apidevtools/swagger-parser 使用教程

阅读时长 7 分钟读完

Swagger 是一种用于描述 RESTful API 的标准。在使用 RESTful API 进行开发的过程中,我们通常需要编写大量的文档来描述 API。而 Swagger 的出现,则使得我们可以用一个简单的文件来描述 API,并且还提供了自动生成 API 文档的工具。

@apidevtools/swagger-parser 是一个 Swagger 风格的 API 描述工具,它可以读取 Swagger API 描述,解析其中的所有内容,并将其转为可读的 JSON 格式,方便进一步的处理。本篇文章将详细介绍如何使用 @apidevtools/swagger-parser 包来解析 Swagger 描述文件,并使用其提供的 API 来访问其中的信息。

安装

首先,我们需要安装 @apidevtools/swagger-parser 包。可以使用以下命令安装:

解析 Swagger API 描述

@apidevtools/swagger-parser 提供了许多 API 来读取 Swagger API 描述。其中,最为重要的两个 API 分别是 parse() 和 validate()。其中,parse() 函数用于解析 Swagger API 描述文件,并返回一个 JavaScript 对象,该对象包含了所有的 API 信息。而 validate() 函数则用于验证 Swagger API 描述文件是否符合 Swagger 定义的规范。

为了演示如何使用 @apidevtools/swagger-parser,我们将使用 Swagger 官方提供的 Petstore 示例 API。该 API 的 Swagger 描述文件可以在以下链接找到:

我们可以使用以下代码来获取该 API 的描述信息:

运行以上代码,输出结果如下:

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

我们可以看到,解析得到的对象包含了 API 的基本信息,包括版本号、主机地址、基础路径、以及每一个 API 的具体描述信息。接下来,我们将详细介绍如何使用这些信息来开发应用程序。

使用 JSONPath

JSONPath 是一种类似于 XPath 的 JSON 路径描述语言,可以使用该语言来查询 JSON 对象中的数据。SwaggerParser 包提供了内置的 JSONPath 实现,因此我们可以使用 JSONPath 来方便地查询 API 描述信息。

例如,我们可以使用以下代码来查询 Petstore API 中所有方法的名字:

输出结果如下:

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

我们可以看到,得到了所有方法的名字。

除了可以查询 API 描述信息之外,JSONPath 还可以用来对 API 描述信息进行修改,删除和替换等操作。更多关于 JSONPath 的信息可以参考 JSONPath 官方文档

在 Express 中使用 API

@apidevtools/swagger-parser 还提供了 express-ajv-swagger-validation 插件,可以用于在 Express 中自动验证 API 请求和响应的数据格式是否符合 Swagger 描述文件定义的规范。使用该插件的步骤如下:

  1. 将 @apidevtools/swagger-parser 安装到依赖中
  2. 定义 Swagger 描述文件
  3. 在 Express 中注册 express-ajv-swagger-validation 插件,并指定 Swagger 描述文件的路径

以下是使用 express-ajv-swagger-validation 的示例代码:

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

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

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

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

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

此时,当我们向 /pets 接口发送一个 JSON 格式的请求体时,如果请求体不符合 Swagger 描述文件定义的格式,服务器将会自动返回一个 400 错误。

总结

使用 @apidevtools/swagger-parser 包可以轻松地解析 Swagger 描述文件,并且可以方便地使用 JSONPath 查询或修改 API 描述信息。同时,结合 express-ajv-swagger-validation 插件,我们可以自动验证 API 请求和响应的格式是否合规,并及时发现问题,提高 API 开发的效率和质量。

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

纠错
反馈