什么是 Serverless?
Serverless 是一种计算模型,其中云提供商类似于云编排、存储桶和消息队列等基础设施以支持应用程序运行。Serverless 应用程序不需要专用的服务器来处理请求,而是采用按需分配的计算资源。
为什么使用 Serverless?
Serverless 极大地简化了应用程序的部署,并提供了弹性和可伸缩性,因为它能够应对不断变化的流量。在 Serverless 应用程序中,您只需要按使用时间支付,而不需要为闲置容量买单,从而大大降低了成本。
什么是 GraphQL?
GraphQL 是一种用于构建 API 的查询语言。它旨在使 API 更加灵活和高效,通过在客户端发送的单个请求中提供所需的数据,减少了传统 RESTful API 的请求次数。GraphQL 可以在后端聚合多个数据源,支持深入嵌套的查询和数据模型的强类型,并提供实时更新的能力。
在 Serverless 项目中为什么使用 GraphQL?
Serverless 技术极大地简化了 Web 应用程序的部署和扩展,而 GraphQL 又极大地简化了 Web 应用程序的数据传递。因此,将 Serverless 和 GraphQL 结合起来可实现一个快速且高性能的应用程序架构。
在 Serverless 项目中,不同功能的 API 可能位于不同的云函数中。而 GraphQL 作为 API 的入口,可以通过聚合多个云函数来提供统一的数据接入点。另外,在 Serverless 应用程序中,资源的分配可能会经常变动,而GraphQL 会在请求时自动地适应这种变化。
如何在 Serverless 项目中集成 GraphQL?
第一步:创建服务器
为了将 GraphQL 添加到 Serverless 架构中,首先需要基于 Node.js 构建一个服务器。Express 和 Koa 是常用的 Node.js Web 框架,并且非常适合在 Serverless 环境中部署。
下面是使用 Express 建立服务器的示例代码:
const express = require('express'); const app = express(); app.get('/', function(req, res) { res.send('Hello World'); }); app.listen(3000);
第二步:配置 GraphQL
使用 Graphql-yoga 构建 GraphQL 服务器最为简单,原因在于它内置于 Express 或 Koa 之中。
-- -------------------- ---- ------- ----- - ------------- - - ------------------------ ----- -------- - - ---- ----- - ------ ------- - -- ----- --------- - - ------ - ------ -- -- ------ ------- -- -- ----- ------ - --- --------------- --------- --------- --- --------------- -- ------------------- -- ------- -- -------------------------
在这个示例中,使用 Graphql-yoga 建立了一个只有一个字符串类型的 Query。要配置更多的 Query 和 Mutation,需要通过跟 GraphQL 约定好的 TypeDefinitions 表述服务端的接口。解析器(resolver)处理不同 GraphQL 请求,并确定客户端想要的数据。返回的数据按照 Graph 中定义的类型,然后发送给客户端。
第三步:使用服务器
一旦你的 GraphQL 和 Express 服务器都配置好了,就可以将其结合在一起,形成一个服务器。为了实现这一目标,您需要向应用程序中添加一个路径,指向 GraphQL 服务器。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- ------ - -------------------- -- --------- --------------- ----- --- - ---------- ------------------- ------------- ------- ------- --------- ----- -- ---- -------- -- ---- ---------------- -- -- - ------------------- ------- -- ----------------------------------- ---
现在,您只需要在浏览器上访问 http://localhost:3000/graphql ,就可以使用 GraphiQL 界面体验自己的 GraphQL 服务器了。
结论
在 Serverless 中集成 GraphQL 是一种高效的方法,可以让您的应用程序更快、更灵活,而开发人员又可以更容易地处理数据交换。Serverless 环境很适合 GraphQL 的实时能力,并且 GraphQL 可以通过分析数据的关系,使得在 Serverless 函数之间传递数据更加简单明了。同时,GraphQL 更像一种框架,而非传统的 API 方案,因为它能自动适应 Serverless 模型的可插拔部署方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674d1593a336082f25488bab