如何在 Serverless 中使用 GraphQL API

在近年来,Serverless 架构逐渐流行起来。相对于传统的基于虚拟机或物理服务器的 Web 应用,Serverless 应用具有更高效的资源利用、更低的成本以及更快的开发和部署速度。在 Serverless 中,我们可以使用各种服务来构建我们的应用,如 AWS Lambda、Azure Functions、Google Cloud Functions等等。而 GraphQL 是一种强大的 API 查询语言,被广泛用于前端应用的数据查询,如何在 Serverless 中使用 GraphQL API 是一个非常值得深入探讨的话题。

Serverless + GraphQL 架构

在 Serverless 中,常常使用 AWS Lambda 函数来处理请求,而 Lambda 函数可以使用各种语言编写,如 Node.js、Python、Java等。我们可以使用 GraphQL 相关的库来快速构建 Serverless + GraphQL 的应用。以下是一些常用的库:

  • graphql-yoga: 一个基于 Express.js 的 GraphQL 服务器库,可轻松创建和运行 GraphQL API
  • apollo-server-lambda: 使用 Apollo Server 可以快速构建 Serverless + GraphQL 应用,lambda 部署在 AWS Lambda 上
  • aws-serverless-express: 将 Express 应用转换成基于 API Gateway 和 Lambda 的快速响应服务器,简化了在 AWS Lambda 上运行 Express 应用程序的流程

在这里,我们将以 graphql-yoga 为例,介绍如何在 Serverless 中使用 GraphQL API。

创建 Serverless GraphQL API

下面我们将逐步介绍创建 Serverless GraphQL API 的过程。

安装依赖

首先,安装 graphql-yoga 和 serverless 库。

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

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

创建 Lambda 函数

我们需要使用 serverless 命令行工具来创建 Lambda 函数。在命令行键入以下命令来创建一个名为 graphql-api-lambda 的 Lambda 函数:

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

创建 Serverless Function 端点

按照 传统使用 Express.js 的方式我们可以方便创建 serverless function,新建一个名为 server.js 的文件:

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

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

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

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

运行以下命令将 GraphQL API 部署成无服务器函数:

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

这将在 AWS Lambda 上创建一个名为 graphql-api-lambda 的函数。

测试 GraphQL API

将 Lambda 函数部署到了云端后,可以使用 Postman 或者 curl 发送查询请求。在命令行里键入以下命令来发送查询请求:

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

这应该会返回以下 JSON 响应:

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

至此,我们已经成功的创建了一个 Serverless GraphQL API。

总结

在本文中,我们介绍了如何在 Serverless 中使用 GraphQL API。我们使用 graphql-yoga 来创建 GraphQL API,并使用 serverless 命令行工具将 Lambda 函数部署到 AWS Lambda 上。GraphQL API 可以帮助您从前端应用程序中查询数据,同时在 Serverless 架构中使用 GraphQL API 可以提高效率,减少成本。至此,您已经可以开始为 Serverless Web 应用程序构建 GraphQL API 了,希望本文对您有所帮助。

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


猜你喜欢

  • TypeScript 中使用 AJV 数据验证库的最佳实践

    AJV 是一个 JSON Schema 验证库,用于验证请求和响应消息的 JSON。TypeScript 作为 JavaScript 的超集,可以为 AJV 提供更好的类型检查和类型补全。

    1 年前
  • HapiJS 的 GraphQL 插件

    GraphQL 是一种由 Facebook 开发的查询语言,其与 RESTful API 相比具有更好的灵活性和可扩展性。而 HapiJS 是一个优秀的 Node.js 框架,它提供了基础设施和工具来...

    1 年前
  • 利用 SASS 让小程序 UI 更易维护

    前言 随着小程序的普及,越来越多的前端开发人员开始关注小程序的开发和维护。小程序作为一种轻量级应用,通常具有较为简单的 UI 结构和样式设计。但是,随着小程序规模的扩大和功能的增加,UI 的维护也变得...

    1 年前
  • MongoDB 如何实现对文档中数组的删除操作?

    在使用 MongoDB 作为后端存储数据库时,我们经常会使用文档数据类型来存储我们的数据。在文档类型中,可以包含数组类型的数据,如果我们需要删除数组中的某个元素,该如何实现呢? 了解 MongoDB ...

    1 年前
  • 如何使用 Chai 和 Mocha 在 Webpack 中进行测试?

    前端开发人员在开发网站时需要确保代码的质量和稳定性。为了实现这一目标,我们需要采用一定的测试策略和工具。在这些工具中,Chai 和 Mocha 是值得关注的两个工具之一。

    1 年前
  • Material Design实现Tab导航条

    Material Design是Google发布的设计规范,它为我们提供了一套简单、直观的设计标准。在Web开发中,我们可以通过使用Material Design来提升我们的用户界面体验。

    1 年前
  • 建议你不要使用嵌套的 tables 表格布局

    建议你不要使用嵌套的 tables 表格布局 在前端开发中,表格布局(table layout)一直是一项重要的技术。然而,有些开发者为了实现复杂的布局,会采用嵌套的 tables 表格布局。

    1 年前
  • Kubernetes Operator 自动化管理解决方案

    Kubernetes Operator 是一种 Kubernetes 扩展 API,可以自动化管理 Kubernetes 资源。它可以将应用程序和服务的开发、部署和维护和 Kubernetes 原生对...

    1 年前
  • 在 Deno 中使用 Koa.js:入门指南和示例代码

    随着 Deno 的出现和发展,越来越多的前端开发者开始探索使用 Deno 开发 Web 应用程序。而 Koa.js,则是一款优秀的 Node.js Web 应用框架,能够实现异步、轻量级的 Web 应...

    1 年前
  • Enzyme 中如何进行 Snapshot Testing

    Enzyme 中如何进行 Snapshot Testing 在前端开发中,测试是一个至关重要的领域。其中一个测试技术叫做“快照测试”(Snapshot Testing),它允许我们以一种简单而快速的方...

    1 年前
  • koa 中使用 Koa-jwt 模块实现 JSON Web Token 验证

    前言 在 Web 应用中,身份认证是必不可少的一部分。最常见的认证方式就是用户输入账号和密码,服务器根据这些信息查询数据库,验证用户身份是否正确。在使用这种方式时,需要重复验证用户身份,而这可能会浪费...

    1 年前
  • 解决 ESLint 编译器中的 Plugin Missing error

    ESLint 是一个广泛使用的 JavaScript 代码分析工具,它帮助开发人员检查代码是否符合规范,并给出错误和警告提示。在使用 ESLint 时,可能会遇到 Plugin Missing err...

    1 年前
  • ES12 中的 String.startsWith 和 String.endsWith

    在前端开发中,经常需要对字符串进行处理。ES6 引入了一些新的字符串方法,比如 startsWith() 和 endsWith(),可以更方便地处理字符串的首尾信息。

    1 年前
  • PM2 如何实现 Node.js 应用的自动跨域访问

    在 Web 开发中,跨域访问是非常常见的问题。为了保障网站的安全,浏览器禁止页面通过 JavaScript 访问其他域名的资源。因此,在为 Node.js 应用中实现跨域访问时,我们需要使用一些技术手...

    1 年前
  • PWA 应用如何实现多环境区分和部署

    前言 在现代的 Web 应用开发中,PWA 技术得到了越来越广泛的应用。为了更好地实现 PWA 应用的部署和管理,我们需要将应用分为不同的环境,并在不同环境中进行相应的配置和部署。

    1 年前
  • Mongoose 中的自动化更新字段的技巧

    Mongoose 是 Node.js 中应用最为广泛的 ORM(对象关系映射)库,主要用于操作 MongoDB 数据库。在使用 Mongoose 进行开发时,经常需要进行自动化更新字段的操作,以便在数...

    1 年前
  • React Native 实现环信即时通讯

    React Native 是基于 React 的框架,让开发者可以使用 JavaScript 和 React 的能力来构建 iOS 和 Android 应用程序。而环信是一款全球领先的即时通讯云服务提...

    1 年前
  • Cypress 自动化测试:如何处理单选框组件

    Cypress 自动化测试:如何处理单选框组件 Cypress 是一种流行的前端自动化测试工具,被广泛应用于 Web 应用程序的测试和集成。在 Cypress 中,我们可以轻松地对各种 Web 页面元...

    1 年前
  • ES11 之 nullish coalescing 操作符详解

    前言 JavaScript 是一门动态语言,变量经常会在不同的场景中被赋予不同类型的值。在进行变量值的判断时,我们通常用 if ... else 语句或三目运算符 ? :,但是这些方法在判断变量是否为...

    1 年前
  • 如何使用 Node.js 和 MySQL 构建 RESTful API?

    随着 Web 开发技术的不断进步,构建 RESTful API 已经成为了现代应用程序开发的必要技能。本文将会介绍如何使用 Node.js 和 MySQL 构建 RESTful API。

    1 年前

相关推荐

    暂无文章