GraphQL简介—无服务器聚会鹿特丹

每次我们组织一次无服务器聚会时,我们似乎都会遇到困难和暴风雨的天气。 就像上次一样,这是在鹿特丹一个非常风暴的夜晚。 尽管如此,还是有很多人参加了会议,我们在Alessio di Crescenzo的GraphQL主题上度过了一个有趣的夜晚。 很遗憾,我们当晚的第二位发言人塞尔吉·吉多拉(Serghei Ghidora)被取消了(由于暴风雨),他将在下一次聚会中发言。 请随时注意我们的聚会页面,以了解即将到来的日期和演讲者。

因此,当晚的主要主题变成了GraphQL。 GraphQL是API的查询语言。 GraphQL的主题很有趣,特别是对于前端开发人员而言,因为它允许他们在查询中指定所需的数据以及所需数据的结构。 而且,它允许在不损害现有查询的情况下向查询添加属性。 换句话说,GraphQL API使保持向后兼容变得容易。 Alessio是Elsevier的前端开发人员。 他向我们解释了为什么他喜欢GraphQL,以及如何在项目中使用它。 我们的成员对GraphQL主题的第一印象;

“对我来说,GraphQL似乎很简单。 看看如何自己构建GraphQL服务器非常有趣。” — Stefano,前端开发人员,无服务器新手

大多数开发人员习惯于使用REST API。 这是在Internet上的计算机系统之间提供互操作性的一种方式。 实际上,这是一个从服务器取回数据的调用。 但是,维护REST API可能很烦人,因为它很容易与域级别耦合。 另外,使用REST API很难在资源之间创建关系。 实际上,解决此问题通常需要向您的API添加许多专用(即非趣味性)端点。 Alessio举例说明了如何解决此问题。 在这里找到他的演示文稿,其中包含这些示例。

从前端角度使用GraphQL的三个主要原因是:

  • 它使我们不必在服务器和客户端之间混在一起
  • 您可以减少服务器与客户端之间的往返次数,因为客户端仅需转到GraphQL服务器即可获取数据
  • 您只有1个(GraphQL)端点,而不是许多端点

在解释了GraphQl的好处之后,Alessio进入了更实际的部分,并展示了如何在GraphQL中创建查询。 查询/操作是GraphQL读取要从服务器获取的数据的方式。 这意味着您指定要通过查询获取的数据。 这些是您要查看的关系。 您在查询中不仅要求数据的类型,而且数据的形状也是如此。 最后,您要执行此操作。 Alessio使用Graphcool工具向我们展示了如何在GraphQL中创建查询。 Graphcool是编写和测试GraphQL查询的好工具。 GraphQL不受任何特定数据库或存储引擎的束缚。 您可以在选择的任何编程语言中使用它。

任何GraphQL服务器的核心都是架构。 模式定义类型及其关系。 它还指定可以针对服务器进行哪些查询。 这可以帮助您创建查询。 Alessio创建了一个示例,并从服务器上获取书籍数据的示例。 假设您想知道每本书的标题及其所拥有的页数,并且想要按版权年份获得该数据。 然后,您的查询如下所示:

查询{

书籍{

_ID

标题

页数

版权年份

}

}

如果您要发出更改数据的请求,则称为突变。 您需要通过在顶部写“ mutation”而不是“ query”来指定您的请求具有副作用。

Alessio继续探讨GraphQL服务器如何与数据库通信。 对于他的项目,他在带有MongoDB的Node上使用Express服务器来公开GraphQL API。 为此,他只需要定义自己的GraphQL模式和解析器以及一个Mongoose模型即可。

为了能够编写查询和变异,您需要在服务器上创建GraphQL查询定义和GraphQL变异定义。 您将在线上找到不同来源的书面代码,以使GraphQL服务器在30秒内运行。

相对于无服务器,GraphQL的主题似乎有点可笑。 毕竟,在Alessio的演讲中,他谈到了创建GraphQL服务器的问题。 但是,GraphQL和Serverless经常结合使用,可能是因为它们很自然地匹配。 它需要以同样的方式来考虑如何设置API,但在技术层面上,使用GraphQL Serverless也有很多好处。 从Meetup获得的结果是,当您运行长时间且繁重的查询时,使用GraphQL Serverless更安全。

  1. 云功能默认情况下并行运行,换句话说,每个请求都与其余请求完全隔离。
  2. 长时间运行的请求会自动超时,因为云功能仅在开发人员允许运行的时间内运行。

如果您想了解有关GraphQL的更多信息,请查看Offcourse平台上的课程。

您是否位于鹿特丹地区,并且想了解有关无服务器的更多信息? 加入我们的聚会小组。 这是一个有兴趣使用无服务器架构构建Web,移动和物联网应用程序的人员的小组。 我们的小组对初学者和专家开放。


最初发布于 www.offcourse.io