NPM 包 Spectral 使用教程

阅读时长 4 分钟读完

在前端开发中,我们经常需要使用 API 或者编写 API。但是,编写 API 需要遵循很多的规范,如参数个数、参数类型、API 返回值等等。如何保障 API 符合规范呢?今天我们来介绍一种 NPM 包,即 Spectral,用于规范 API。

什么是 Spectral?

Spectral 是 OpenAPI 指南中所确定的语义验证器。它使用 Json Schema 范式,并提供基于规范的验证程序。随着 OpenAPI 的日益流行,Spectral 可以验证 OpenAPI 和其他 API 规范,并确保规范执行顺利。此外, Spectral 是社区 OpenAPI 规范中追求一致性和可靠性的一部分。

安装和使用

  1. 安装 Spectral
  1. 规则文件

Spectral 使用规则文件来指定测试以及规则。我们根据个人需求编写规则文件。比如我们要测试一个 API,要求这个 API 返回的是一个对象,其中必须包含 nameage 两个字段。

我们可以创建一个名为 myRuleset.yaml 的文件,并编写以下内容。

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

上述内容是一组基本规则,以 nameage 字段为例。每个规则有一个独特的名称,并且包含描述和回调函数。给定是 JavaScript 表达式,控制要关注什么。在这个例子中,$response.body 是给定的表达式,这意味着规则会依次检查 API 响应的 body 部分。

然后,我们将规则文件的位置传递给 Spectral。

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

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

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

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

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

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

通过 fspath 模块读取规则文件,并将文件的内容传递给 Spectral 实例的 setRuleset 方法。最后使用 run 方法传入 API 的响应,就可以得到 API 是否符合规范。

常用规则

Spectral 支持开箱即用的规则,同时支持自定义规则。这里我们介绍几个常用的规则。

OpenAPI 规则

  • oas2-schema: 使用 JSON Schema 为谁创建 OpenAPI 规范,以确保它们格式正确
  • operation-tags: 每个捆绑到操作数组的操作必须有一个 tags 字段。该字段必须是一个非空字符串数组,其中包含有关操作的标记。
  • operation-operationId-unique: 必须为每个操作分配唯一的 operationId

Node.js 规则

  • no-eval-in-markdown: markdown 中不能使用 eval
  • no-new-date-without-argument: 不应该使用无参数调用 Date,它将创建一个日期对象,其时间戳与安装 Node.js 的时间戳相同。
  • no-return-await: 不应该在必须使用 await 的地方返回一个无需 await 的值,可以直接返回一个 promise。

总结

Spectral 通过 Json Schema 范式和规则文件,为我们的开发和 API 编写提供了强力的支持。在使用时,我们可以根据业务需求编写对应的规则,并对 API 返回进行统一的格式要求。同样,也可以使用 Spectral 开箱即用的规则,方便快捷。

希望本文能够给你带来帮助,谢谢!

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

纠错
反馈