npm 包 express-graphql-custom-req-limit 使用教程

简介

GraphQL 是一种用于 API 的查询语言,它对前端开发人员来说是一个很有用的工具。而 express-graphql-custom-req-limit 则是一个基于 Express 框架的 GraphQL 中间件,可以限制 GraphQL API 每次请求的数据量和请求次数。

本文将会介绍如何使用 express-graphql-custom-req-limit 这个 npm 包,并针对其中的关键技术进行详细解析。

安装

首先,你需要安装 express 和 express-graphql-custom-req-limit 这两个 npm 包:

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

使用

使用 express-graphql-custom-req-limit 需要先创建一个 GraphQL schema:

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

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

接着,创建一个 Express 应用程序,并将 schema 和中间件添加到应用程序中:

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

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

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

现在,你已经可以通过访问 http://localhost:3000/graphql 来进行 GraphQL 查询了。

配置

默认情况下,express-graphql-custom-req-limit 使用了如下的默认值:

  • 每次请求的数据量上限为 1MB;
  • 每 10 秒最多可以处理 10 次请求;
  • 当某一时刻请求数超过了上限时,会返回 HTTP 状态码为 429 的错误。

如果需要自定义这些限制,你可以在调用 graphqlHTTP() 函数时传入一个 options 对象:

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

可以看到,我们在 options 对象中传入了三个参数:

  • maxBytes:每次请求的数据量上限,单位为字节;
  • maxCalls:每 10 秒最多可以处理的请求次数;
  • error:用于自定义错误处理函数。

另外,我们也可以使用 onExceededMax 参数来控制当某一时刻请求数超过了上限时的响应行为:

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

解析

机器无法识别自然语言,因此客户端向服务端发送的查询请求必须使用一个特定的 JSON 格式,称为 GraphQL 查询语言。这个格式看起来很像 JavaScript 对象,比如:

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

上述查询语言的含义是:获取英雄(hero)的名字(name)和其朋友(friends)的名字(name)。

如何将这些查询语言翻译成实际的数据呢?这就是 GraphQL schema 要实现的内容了。一个 schema 包含了一些 type(类型),而每个 type 又包含了一些字段(field)。比如,我们可以定义一个名为 Query 的 type,它包含了一个名为 hello 的字段:

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

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

该 schema 定义了一个字符串(String)类型的字段 hello,用于返回一个字符串。这样,在服务端即可写下如下处理函数:

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

最后,我们将 schema 和处理函数提供给 express-graphql-custom-req-limit 中间件,并使用 Express 启动服务器:

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

现在,我们可以通过访问 http://localhost:4000/graphql 来进行 GraphQL 查询,并返回一段字符串 Hello world!

示例代码

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

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

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

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

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

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

总结

本文简要介绍了 npm 包 express-graphql-custom-req-limit 的使用方法,并对其中涉及到的关键技术进行了详细描述。通过本文的学习,读者可以全面掌握 GraphQL 和 express-graphql-custom-req-limit 的使用,并且能更好地理解 GraphQL 中间件的原理。同时,本文也提供了一个完整的示例代码,供读者参考。

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


猜你喜欢

  • npm 包 23mf-ui 使用教程

    在前端开发中,我们经常需要使用各种第三方的库和工具来方便我们的工作,其中 npm 包是我们使用最广泛的一种工具。今天,我要介绍的是一个非常实用的 npm 包 -- 23mf-ui ,它提供了丰富的 U...

    3 年前
  • npm 包 cchelsisdevcampjs-footer 使用教程

    本教程将详细介绍如何使用 npm 包 cchelsisdevcampjs-footer 来添加一个美观实用的底部组件到你的网站中。此组件能够方便地帮助你显示版权信息、联系方式等。

    3 年前
  • npm 包 macos-key-listener 使用教程

    npm 包 macos-key-listener 使用教程 在前端开发中,我们经常需要监听键盘事件以实现特定的功能,macOS 作为一款优秀的操作系统,提供了多种快捷键以方便用户操作,而 macos-...

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

    简介 the-2d 是一款基于 canvas 的 2D 渲染引擎,在前端开发中可以用来实现各种 2D 游戏、动画和可视化效果。它是一个公开的 npm 包,可以通过 npm 安装和使用。

    3 年前
  • npm包createrouterplugin使用教程

    简介 在现代Web应用开发中,前端路由是一个非常重要的组件。在使用Vue、React等框架时,我们通常需要配置路由,以实现不同页面之间的切换。如果我们想要在路由切换时进行一些操作,或者在页面切换时添加...

    3 年前
  • npm 包 custom-wheels 使用教程

    简介 在前端开发中,常常需要用到一些常见的 UI 组件和工具库,以提高开发效率和优化用户体验。在这个过程中,npm 包成为了我们获取和管理库文件的标准方式。其中,custom-wheels 是一款实用...

    3 年前
  • npm 包 media-driver 使用教程

    在前端开发中,我们经常需要使用多媒体文件,例如音频、视频等。而 media-driver 是一个基于 WebRTC 技术的 npm 包,可以方便地对多媒体流进行操作,包括音频、视频的采集、处理、编解码...

    3 年前
  • npm 包可以如何使前端开发更加高效——slmf-http-connector

    介绍 在进行前端开发的过程中,常常需要发送 HTTP 请求与后端服务器进行交互。为了达到更高的开发效率,我们可以使用 slmf-http-connector 这个 npm 包。

    3 年前
  • npm 包 @dopustim/eslint-config 使用教程

    简介 在前端开发过程中,代码风格统一是非常重要的一个环节。为了保证代码风格的一致性,我们通常会使用 linter 工具来对代码进行检查和规范。其中 eslint 是一个非常流行的 linter 工具。

    3 年前
  • npm 包 dimmer 使用教程

    前言 在 Web 开发中,我们很容易需要添加一些效果来模糊或遮盖某个区域,这时候一个好用而且常用的工具是 dimmer。dimmer 是一个简单的 JavaScript 库,它可以在指定的元素上添加类...

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

    #npm 包 slf-js 使用教程 概述 slf-js 是一个轻量级的 JavaScript 库,用于在 web 应用程序中进行日志记录。该库提供了多种可选参数,可用于自定义日志记录级别、时间戳、上...

    3 年前
  • npm 包 @awly/lasso-marko 使用教程

    前言 在现代前端开发中,前端工程师要掌握的知识点非常多,其中包括各种各样的前端工具和框架。npm 是一个非常流行的前端包管理器,它可以让我们方便地安装和使用前端包,加快我们的开发速度。

    3 年前
  • npm 包 performance-polyfill 使用教程

    介绍 在前端开发中,性能优化一直是一项非常重要的工作。而公司和各个团队之间的竞争也需要更快的速度和更完美的用户体验。因此,优化 DOM 和 JavaScript 性能成为了前端开发的热点话题。

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

    React Native 是一款由 Facebook 推出的开源移动应用开发框架,它基于 React.js 和 JavaScript 技术栈,可帮助开发者快速构建高质量的跨平台应用。

    3 年前
  • npm 包 rp-queue 使用教程

    如何使您的 Node.js 应用程序并发执行多个请求?又如何在大流量下平稳的处理请求队列?答案是使用 rp-queue npm 模块。该模块提供了一种简单的解决方案,以便有效地管理请求队列和并发请求。

    3 年前
  • npm 包 the-canvas-access 使用教程

    前言 在前端工作中,我们经常需要操作 Canvas 元素。但是,由于一些浏览器的安全限制,我们不能直接访问 Canvas 中的像素数据。the-canvas-access npm 包就提供了一种解决方...

    3 年前
  • npm 包 timespan-parser 使用教程

    简介 timespan-parser 是一个可以解析时间段字符串的 npm 包,支持多语言,可以把各种时间段的字符串转换成可以计算的数字毫秒值。 安装 通过 npm 安装 --- ------- --...

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

    简介 negeducompany-js-footer 是一个基于 Javascript 的 npm 包,在前端页面底部添加版权信息和导航链接的功能。 安装 可以通过 npm 命令安装 negeduco...

    3 年前
  • npm 包 @dopustim/coffeelint-config 使用教程

    前言 在现代的前端开发中,代码规范越来越被开发者们所重视。一个优秀的代码规范能够提高代码的可读性和可维护性,并为团队协作提供更好的支持。 在 JavaScript 生态圈中,有很多工具可以帮助开发者进...

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

    前言 在前端开发中,我们经常需要和服务器进行交互,如远程执行命令、上传下载文件等操作。这时候我们需要使用 ssh 连接到服务器,然后执行相关操作。 ssh 连接和操作的流程比较复杂,一般需要使用 ss...

    3 年前

相关推荐

    暂无文章