在近年来,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 库。
# 安装 graphql-yoga npm install graphql-yoga # 安装 serverless 库 npm install -g serverless
创建 Lambda 函数
我们需要使用 serverless 命令行工具来创建 Lambda 函数。在命令行键入以下命令来创建一个名为 graphql-api-lambda
的 Lambda 函数:
serverless create --template aws-nodejs --path graphql-api-lambda
创建 Serverless Function 端点
按照 传统使用 Express.js 的方式我们可以方便创建 serverless function,新建一个名为 server.js
的文件:
-- -------------------- ---- ------- ----- - ------------- - - ----------------------- ----- -------- - - ---- ----- - ----------- -------- ------- - - ----- --------- - - ------ - ------ --- - ---- -- -- ------ ------ -- ---------- -- - ----- ------ - --- --------------- --------- --------- -- --------------- - ----------------------
运行以下命令将 GraphQL API 部署成无服务器函数:
serverless deploy
这将在 AWS Lambda 上创建一个名为 graphql-api-lambda
的函数。
测试 GraphQL API
将 Lambda 函数部署到了云端后,可以使用 Postman 或者 curl 发送查询请求。在命令行里键入以下命令来发送查询请求:
curl -X POST <your serverless function url> \ -H "Content-Type: application/json" \ -d '{"query":"{ hello(name: \"John\") }"}'
这应该会返回以下 JSON 响应:
{ "data": { "hello": "Hello John" } }
至此,我们已经成功的创建了一个 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