【GraphQL】Apollo是什么?

这篇文章是关于2023年Qiita公司的日历| Qiita附属日历2023 – Qiita的第7天的文章。

 


首先

我們將解釋關於GraphQL的Apollo這次的主題。

 

尽管在上述的文章中提到了Apollo,但它并没有对Apollo自身进行解释,因此我想在本文中进行总结。

Appolo是什么?

用一句话来表达的话,它指的是GraphQL的前端和后端库。

从下面的公式中引用图表

スクリーンショット 2023-11-07 16.11.02.png

无论是Web、iOS、Android等客户端,在调用GraphQL时都会调用Apollo,
而在服务器端,也会使用Apollo将数据汇总并进行统一管理。

阿波罗客户端

请按以下方程进行引用

Apollo Client是一个全面的JavaScript状态管理库,它使您能够使用GraphQL管理本地和远程数据。使用它来获取、缓存和修改应用程序数据,同时自动更新您的用户界面。

Apollo Client是一个用于与GraphQL服务器通信的JavaScript库。
在这里定义查询和变更。

阿波罗服务器

从下面的公式中引用

Apollo Server是一个开源、符合规范的GraphQL服务器,与任何GraphQL客户端兼容,包括Apollo Client。

Apollo Server 是一个处理来自客户端的 GraphQL 操作的 JavaScript GraphQL 服务器。
在这里定义了 GraphQL 的模式和解析器。

什么是“リゾルバ”?
根据官方定义来说。

解析器是在您的架构中负责为单个字段填充数据的函数。

简单说,它指的是为模式定义的类型定义实际值和操作的函数。

以下是基本语法:

type Query {
  stringDog: String! # 毎回dogを返す
  stringCat: String! # 毎回catを返す
}

将上述的类型定义定义如下。

const resolvers = {
  Query: { 
    stringDog() {
      return 'dog';
    },
    stringCat() {
      return 'cat' 
    },
  },
};

補充一下,我們需要確保 type Query 和 Query: { 部分的鍵名一致,type 的 field 名稱 (鍵名) 必須與 resolvers 的 field 名稱 (鍵名) 一致。

此外,String和String!之间的区别在于是否允许空值(!代表不允许空值)。

最后

这次,我们给大家介绍了Apollo本身的基本说明。

Apollo被称为前后端库,因为它具备了客户端和服务器的功能,可以同时操控它们,就像之前所描述的那样。

我打算在之后的某天使用Apollo发布示例代码。

希望这篇文章对大家有所帮助!

请参考以下资料

 

bannerAds