实现React+Appsync的Subscription(第一部分)

首先

我使用Appsync的Subscription来创建一个聊天应用程序,并进行了各种调查,但却找不到合适的信息。经过各种参考,我尝试实现了Appsync的订阅功能,并记录了下来。

AppSync和GraphQL非常方便,一旦熟悉,就能快速且轻松地实现数据库和API的开发。由于篇幅较长,我会分成两次发送。

1. API的设置,GraphQL的测试。
2. React项目的启动和实现。

这次的情况

1. Appsync的配置

2. 定義模式(Schema)和解析器(Resolver)
(由于AppSync会自动进行解析器的配置,所以跳过此步骤。)

3. 创建数据库

4. 进行GraphQL测试

AppSync配置

首先,登录AWS控制台,启动Appsync。

点击CreateAPI。

GraphQL 的定义

点击菜单栏中的Schema选项。

type Post{
 id:ID!
 title:String
 content:String
}
type Query{
 getPosts:[Post]
}
schema{
 query:Query
} 

首先,我们需要定义”Post”的类型。”ID”和”String”是GraphQL中预定义的类型。”!”符号表示必填项,所以我们需要将必填项加上。本例中,我们将”id”设为必填项。

接下来,我们要注册”Post”类型的查询。我们将”getPosts”作为对象,以数组的形式传递给名为”Query”的根类型。

最后,我们需要将查询注册到模式中,这样就完成了。

数据库设置

点击Schema页面上的“Create Resources”。
将“Define or select a type”设置为“Use existing type”,
将“Select a type”选择为“Post”。
确认TableName已更改为“PostTable”,并开启“Automatically generate GraphQL”选项,然后点击底部的“Create”按钮。
这样一来,Appsync会自动设置Query和Resolver,并在DynamoDB中创建数据库。
※如果勾选DynamoDB中的“PostTest”项目,只会发现id已注册,但可以放心操作,因为会自动添加项目,可以顺利进行下一步的GraphQL测试。

GraphQL测试

发布帖子的测试

mutation{
 createPost(input:{
  title:"MutationTest"
 content:"Queriesから投稿"
 }){
  id
  title
  content
 }
}

更新帖子的测试 de

mutation{
 updatePost(input:{
 id:""(先ほどのcreatePostのidを入力)
  title:"MutationTest1"
 content:"Queriesから投稿"
 }){
  id
  title
  content
 }
}

执行 getPosts 的测试

请事先使用createPost添加几个帖子。

query{
getPosts{
 id
 title
 content
 }
}

列出帖子的测试

query{
 listPosts{
  items{
   id
   title
   content
  }
 }
}

僵持不下的地方

解析器配置和GraphQL测试

从2018年7月19日开始,GraphQL模式和解析器几乎可以自动创建。这个自动配置非常方便。起初,我参考了其他网站,但是在使用createPost并传入CreatePost值时遇到了一些麻烦,无法成功进行测试,令我非常苦恼。当测试不成功时,需要调整Schema页面内的Resolver。关于Resolver的内容将在下一个机会中介绍。

请参考以下网址:https://aws.amazon.cn/about-aws/whats-new/2018/07/aws-appsync-releases-enhanced-capabilities-nocode-graphql/

bannerAds