npm 包 swagger-express-validator-formats 使用教程

前言

对于前端开发人员而言,了解如何使用 npm 包对于开发过程中大有裨益。在本篇文章中,我们将会介绍一个非常实用的 npm 包:swagger-express-validator-formats,以及它如何帮助我们更方便地进行 API 数据格式校验。

什么是 swagger-express-validator-formats?

swagger-express-validator-formats 是一个基于 Swagger 规范的数据格式校验 npm 包。它可以与 express 应用程序一起使用,方便我们对来自于 API 的数据进行校验,以确保数据格式的正确性。

安装

在使用 swagger-express-validator-formats 之前,需要先安装该 npm 包。可以通过以下命令进行安装:

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

该命令会在项目的 package.json 文件中添加一个依赖,并将该 npm 包下载到本地。

基本用法

1. 定义 Swagger 规范

在使用 swagger-express-validator-formats 进行数据格式校验之前,需要使用 swagger 编写 API 规范。我们可以将 swagger 规范写在一个 .yaml.json 文件中,并使用 swagger-editor 进行编辑。

下面是一个 swagger 规范的示例:

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

2. 使用 swagger-express-validator-formats 进行数据格式校验

接下来,我们需要在 express 应用程序中引入 swagger-express-validator-formats,并将 swagger 规范传入其中,以验证请求的数据格式。

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

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

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

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

在上述示例中,我们使用 express.json() 中间件来解析请求的 JSON 数据。然后,我们使用 swaggerValidator 函数传入 swagger 规范,该函数将返回一个中间件函数,该函数会验证请求的数据格式是否符合规范。最后,我们实现了一个简单的 API 接口,接收来自客户端的请求,并返回一个包含请求中传输数据的回复。

3. 发送请求

完成了 express 应用程序以及数据格式校验的设置后,我们可以使用任何一种 HTTP 客户端工具(如 Postman 或 cURL)来向我们写的 API 发送请求。

下面是一个使用 cURL 发送 POST 请求的示例:

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

发送该请求后,服务端会将请求中传输的数据返回给客户端,客户端将会收到类似以下内容的响应:

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

深入了解

格式校验

Swagger-express-validator-formats 主要用于格式校验。校验数据格式时,该 npm 包会将请求中传输的数据项与 swagger 规范中定义的 schema 进行对比,以确保传输的数据格式是正确的。

对于数据中的各种格式(如数字、字符串、日期、时间、电话号码等等),Swagger-express-validator-formats 提供了内置格式校验。此外,我们还可以在 swagger 规范中自定义格式校验的正则表达式。例如,我们可以在 swagger 规范中添加以下内容:

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

在这个示例中,我们自定义了一个格式校验的正则表达式,该表达式验证了数据中是否包含一个合法的电话号码。在数据格式校验时,Swagger-express-validator-formats 将会根据传输的数据以及规范中定义的 phoneNumber 参数来验证数据是否符合要求。

API 接口自动文档

使用 swagger-express-validator-formats 不仅可以帮助我们对 API 数据格式进行校验,同时还可以生成接口自动文档。我们可以在项目中添加 swagger-ui-express 包,从而在浏览器中查看接口文档。

下面是一个基本的实例:

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

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

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

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

在此示例中,我们添加了 swagger-ui-express 包,将接口文档提供给浏览器查看。请注意,我们使用了 servesetup 方法,将 swagger 规范传给 swagger-ui-express 中间件,并将中间件绑定到了 /docs 路径,以便在浏览器中浏览 API 文档。

状态码校验

在 swagger 规范中,我们可以定义每个 API 方法的期望响应。我们可以指定每个响应需要的状态码以及响应内容格式。在进行 API 数据格式校验同时,Swagger-express-validator-formats 也会帮助我们验证 HTTP 响应的状态码是否符合要求,并且,如果响应的状态码不在规范中的期望列表中时,Swagger-express-validator-formats 将会抛出相关的错误信息。

下面是一个状态码校验的示例:

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

在这个示例中,我们指定了 /api/user 路径下 POST 方法的期望响应状态码,分别为 201、400、401 和 500。这意味着,当客户端使用我们的 API 时,如果 API 响应的状态码不在上述四个状态码中,则会引发 Swagger-express-validator-formats 中间件抛出的错误。

统一 API 返回格式

在许多项目中,我们希望能够给 API 提供一致的、规范的响应格式。Swagger-express-validator-formats 通过简单的配置选项,可以让我们在应用程序中自定义一个中间件函数,用于包装每个 API 的响应,以达到统一 API 返回格式的目的。

下面是一个自定义 API 返回格式的中间件的示例:

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

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

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

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

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

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

在这个示例中,我们使用了 formatResponseFn 函数来包装每个 API 的响应内容。该函数会在 Swagger-express-validator-formats 中间件之后被调用,并对答复内容进行重新格式化,以满足我们的期望格式。在 formatResponseFn 函数中,我们定义了一个函数 originalSend,该函数保留了 res.send 的原始实现,并使用它来向客户端发送格式化数据。

在上述示例中,我们还添加了一个错误处理中间件 errorHandlingMiddleware,该中间件会捕捉到所有对应用程序抛出的错误,并将错误信息以统一格式返回给客户端。这样,我们就可以轻松地为我们的 API 设计一致的错误信息返回格式。

结论

在本文中,我们介绍了 swagger-express-validator-formats 这个非常有用的 npm 包。我们讲述了如何安装、配置和使用这个 npm 包,以及如何深入了解和发挥它的实用功能。通过了解 swagger-express-validator-formats,我们可以在开发 API 时更加高效和准确。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005663b81e8991b448e23ae


猜你喜欢

  • npm包poolq使用教程

    介绍 npm包poolq是一个能够获取使用者池队列的库。 安装和使用 在命令行中执行以下命令安装poolq : --- ------- -----在我们要使用的文件中,导入或引用poolq模块: --...

    3 年前
  • npm 包 npmliar 使用教程

    随着前端技术的不断发展,越来越多的开发者会选择使用 npm 包来管理项目依赖。npmliar 是一个非常有用的 npm 包,可以帮助我们快速地查找和管理依赖。在本文中,我们将深入探讨 npmliar ...

    3 年前
  • npm 包 frame-loader 使用教程

    在前端开发中,很多情况下我们需要在页面中引入其他网站或者页面的内容,比如广告或者嵌入式页面。这时候就需要使用 iframe 标签来实现。但如果需要在 iframe 中加载一个完整的页面,那么就需要使用...

    3 年前
  • npm 包 cerebro-windowfinder 使用教程

    介绍 Cerebro-windowfinder 是一个可以实现在桌面应用中查找窗口、切换窗口的快捷工具。它可以被集成到各种前端开发工具中,如 VSCode、Sublime Text、IntelliJ ...

    3 年前
  • npm 包 censorify-billychan 使用教程

    简介 censorify-billychan 是一款用于文本过滤的 npm 包,可以用于在前端、后端或命令行下进行文本过滤处理。该包实现了对指定文本中的敏感词汇进行替换、删除等操作,支持自定义敏感词汇...

    3 年前
  • npm 包 react-infinite-scroll-waypoint 使用教程

    在前端开发中,实现无限滚动是非常常见的需求,它可以带来更好的用户体验,也可以加快网站或应用的加载速度。而 react-infinite-scroll-waypoint 是一个非常好用的 npm 包,可...

    3 年前
  • npm 包 react-native-blockies 使用教程

    1. 什么是 react-native-blockies react-native-blockies 是一个生成 Blockies 的 React Native 包。

    3 年前
  • npm 包 pmod 使用教程

    简介 pmod 是一个开源的 npm 包,用于简化 JavaScript 中对于操作 DOM 的需求。它提供了一种友好的方式来管理页面上的元素,让开发者可以更加专注于业务逻辑的实现,而无需过多地关注 ...

    3 年前
  • npm 包 @jemmyphan/react-native-md-textinput 使用教程

    随着移动端应用的普及,React Native 的应用场景也越来越广泛。而一个好的用户界面设计是吸引用户的重要因素之一。@jemmyphan/react-native-md-textinput 是一个...

    3 年前
  • npm 包 yarn-lock-cli 使用教程

    简介 在前端开发中,我们经常需要管理项目的依赖项,其中一个非常重要的工具就是 npm。npm 是一个包管理器,可以让我们方便地安装、升级和管理 JavaScript 包。

    3 年前
  • npm 包 is-listening 使用教程

    在前端开发中,我们经常会需要使用到网络通信功能,而网络通信功能要起作用,就必须保证服务端的监听端口是打开的。为了方便判断服务端是否处于监听状态,我们可以使用 npm 包 is-listening。

    3 年前
  • npm 包 magnifique-rest 使用教程

    前言 在前端开发过程中,我们总会遇到需要与后台进行数据交互的情况。如何高效地完成这些工作显得非常重要。在这篇文章中,我将介绍一个非常实用的 npm 包——magnifique-rest,该包提供了一套...

    3 年前
  • npm 包 ngx-pubsub 使用教程

    在前端开发中,很多时候不同组件或模块之间需要进行数据交互,而通过传递参数或 props 等方式实现通信可能并不是非常方便或直观。因此,在这种情况下,我们可以使用订阅-发布模式来完成组件之间的数据通信。

    3 年前
  • npm 包 mdi-es6 使用教程

    在前端开发中,我们经常需要使用各种图标来装饰我们的页面。Material Design Icons (MDI) 是一套普及度极高的开源图标库,其中包括了各种应用场景下常用的图标。

    3 年前
  • npm 包 dragdrop-js 使用教程

    在前端开发中,拖拽功能是非常常用的功能。采用 JavaScript 实现拖拽功能需要编写大量的代码。这就是为什么开发者们希望使用现成的模块来实现这个功能。而 npm 包 dragdrop-js 就是一...

    3 年前
  • npm包 @jemmyphan/react-native-day-picker使用教程

    介绍 React Native Day Picker是一个前端开发工具包,可用于创建可定制和交互式的日期选择器。它是一个 npm 包 @jemmyphan/react-native-day-picke...

    3 年前
  • npm 包 base64-async 使用教程

    在前端开发中,base64 编码是十分常见的操作,主要应用在数据传输、图片压缩等方面。而 npm 包 base64-async 提供了异步的 base64 编码和解码,可以帮助我们更加高效地处理数据。

    3 年前
  • npm 包 jsonrpc-2 使用教程

    jsonrpc-2 是一个运行在 Node.js 和浏览器环境下的 RPC(远程过程调用)库,它使用 JSON-RPC2 协议,便于前后端交互和通信。在前端开发中,使用 jsonrpc-2 可以减少代...

    3 年前
  • npm包ng2-fab-speed-dial使用教程

    简介 ng2-fab-speed-dial 是一个轻量级的 Angular2+ 组件库,旨在帮助前端开发者快速实现页面风格为 FloatingActionButton Speed Dial的功能。

    3 年前
  • npm 包 promise-more 使用教程

    简介 在前端开发中,异步操作是必不可少的一部分。而 Promise 是一种相对而言较为优秀的异步操作解决方案。在实际开发中,一些常用的 Promise 方法和操作却需要开发者自行实现。

    3 年前

相关推荐

    暂无文章