让我们使用AWS AppSync和React创建一个ToDo应用程序(1)定义GraphQL模式

首先

在AWS AppSync中,为了在API查询中使用GraphQL,需要定义GraphQL的模式。
这次我们将创建一个名为schema.graphql的文件,并在这里定义GraphQL模式。

Todoスキーマ的定义

查询

首先,我们定义了Todo的类型。
每个项目都有一个指定的ID、String和Int类型,这是GraphQL默认提供的类型。
此外,!表示该项是必需的。

type Todo {
  id: ID!
  title: String
  description: String
  completed: Boolean 
}

接下来,我们将为这种类型定义一个查询。添加名为Query的根类型,并在其中添加一个getTodos字段,该字段将返回包含Todo对象的列表。

type Query {
  getTodos: [Todo]
}

我将在架构中注册。

schema {
  query:Query
}

这些结果到此为止。

schema {
  query:Query
}

type Query {
  getTodos: [Todo]
}

type Todo {
  id: ID!
  title: String
  description: String
  completed: Boolean 
}

突变

由于对查询数据进行了查询类型的定义,因此我们将继续定义用于在变更中添加、更新和删除数据的查询类型。

首先,我们会定义在进行添加和更新操作时的mutation。
addTodo字段接受参数,类似于一个方法,返回一个Todo对象作为结果。

type Mutation {
  addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
}

我们还定义了在编辑和删除时发生的变化。

type Mutation {
  addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
  updateTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
  deleteTodo(id: ID!): Todo
}

而且,尽管这次没有使用,但似乎也可以使用枚举类型等。

到目前为止的结果 de

schema {
  query: Query
  mutation: Mutation
}

type Query {
  getTodos: [Todo]
}

type Mutation {
  addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
  updateTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
  deleteTodo(id: ID!): Todo
}

type Todo {
  id: ID!
  title: String
  description: String
  completed: Boolean 
}

订阅

由于本次示例中不需要实时性,因此不使用订阅服务。如果有机会的话,我会尝试一下。

注册GraphQL模式

将在前面的步骤中创建的GraphQL模式上传到AppSync。

首先,从控制台界面中选择“AWS AppSync > 创建的项目 > 架构”,打开架构编辑界面。

スクリーンショット 2018-01-21 19.59.31.png

请将创建的GraphQL模式的内容复制粘贴到Schema字段中,然后点击右下方的“保存”按钮保存。点击按钮后,系统将验证内容,并在模式中存在语法错误时显示错误消息。

スクリーンショット 2018-01-21 20.05.13.png

如果出现错误,请修复相关部分并重新保存。成功保存后,schema.graphql 中定义的类型列表将显示在“Data Types”部分。

スクリーンショット 2018-01-21 20.16.49.png

以下是GraphQL模式的定义以及向AppSync注册的步骤。

请参考

设计您的模式 – AWS AppSync
GraphQL简介 – GraphQL