学习GraphQL的入门方式!只需要了解概述即可!
首先
本次我们将介绍GraphQL的概要!
-
- GraphQLが出てくるまでに、どのようなデータ通信があったのか?
-
- RESTの問題点は何か?
-
- GraphQLでできること
- GraphQLの始め方
我会对其进行解释!

数据通信的历史
作为最早出现的数据通信协议之一,存在一种称为RPC的协议。
这是远程过程调用的缩写,它允许客户端调用服务器端的方法。
近年来,谷歌发明的符合HTTP/2标准的gRPC也开始出现。
接下来出场的是由微软提出的SOAP。
这是通过使用XML进行数据通信的方法。
在SAML认证中也使用了它。
需要创建如下所示的XML文件。
稍微有点难以阅读。
<?xml version="1.0"?>
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
<City>Mill Valley</City>
<State>CA</State>
<Zip>10999</Zip>
<Country>USA</Country>
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
<City>Old Town</City>
<State>PA</State>
<Zip>95819</Zip>
<Country>USA</Country>
</Address>
<DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>1</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
</Items>
</PurchaseOrder>
REST是一种比SOAP更简单的数据通信协议。
REST使用HTTP方法(GET、POST、PUT、PATCH、DELETE)在资源的URL上返回响应以进行使用。
它易于在后端进行控制,并且非常简单易于引入!
REST的缺点
尽管REST具有简洁易用的特点,但由于响应是固定的,会出现以下问题。
由于响应是固定的…
– 如果想要将多个数据组合使用,使用一个API很困难。
– 如果要使用的信息很少,需要在前端进行过滤。
GraphQL是为了解决上述问题而由Facebook开发的。它是一种以前端主体发起查询请求的数据通信方式。同时,它还通过定义API的规范作为模式来进行开发。
GraphQL 可以做的事情
GraphQL提供了以下功能,为了能够让你即使仅仅通过氛围也能掌握,我也写了一些代码。
-
- クエリ
-
- ミューテーション
- サブスクリプション
请用中文解释该问题
查询就像SQL语句一样,你可以写下你想要的数据。
query {
# 欲しいデータのモデル名を書く
person(personId: 1) {
# 実際に取得したいデータを書く
name
age
address
# リレーションを設定している場合、紐づいている先のデータも取れます!
company {
name
}
}
}
变异
用来进行值的修改。
可以与REST相同地使用。
mutation personMutation {
update(name: "Namae!!!") {
id
name
}
}
订阅
当客户端检测到数据变更时,会触发相应的操作。
subscription {
nameChange {
name
}
}
GraphQL的入门
在GraphQL中也有专门的工具,就像在REST API中有Paw或Postman一样。
我认为GraphiQL或GraphQL Playground的任何一个都可以。
使用它们,您可以尝试发出查询语句。
另外,作为查询的服务器,可使用Star Wars API或GitHub API。如果只是查询语句,可以使用Star Wars API,如果想试试变异操作,可以尝试使用GitHub API!
如果您在尝试中对此产生了兴趣,并且希望亲自动手制作,那么请在Apollo项目或Relay项目中选择您想要使用的服务器,并动手制作吧!
总结
这次,我们简单介绍了GraphQL。
如果有任何想法或评论,请告诉我!同时,我也期待在Twitter和YouTube上收到您的评论!