[AWS AppSync] サンプルスキーマを使った API を作成しコンソールからクエリを発行してみる

2018.05.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、菊池です。

先日、フルマネージドなGraphQLサービス、AWS AppSyncが正式リリースされました。

AppSyncについては、上記の記事が詳しいので、合わせて参照ください。公開と同時に、東京リージョンでも利用することが可能になっています。

私も正直、GraphQLってどんなもんなん?ってところでしたので、公開されているサンプルスキーマを使ってAPIを作成し、実際に触りながら理解を深めていきたいと思います。実際に公開するAPIを使うためには、それにあわせたクライアントアプリケーションも必要となりますが、マネジメントコンソールからもクエリを発行することができますので、今回はそれを使って試していきます。

サンプルスキーマを使ったGraphQL APIの操作

サンプルスキーマを使ったGraphQL APIの作成

まずは、サンプルスキーマを使ってAPIを公開します。

コンソールから、[Create API]を選択します。

APIの名前(任意)を入れ、今回は[Sample schema]を選択します。あとはそのまま、画面下までスクロールして[Create]。

すると、これだけでAPIが作成できてしまいます。エンドポイントURLと、認証コードが発行されています。これらは、後からカスタマイズも可能です。

クライアントアプリを開発するためのリポジトリや、エンドポイントの情報が入ったJSONファイルもダウンロードできます。

作成されたAPIの[Data Sources]をみると、DynamoDBのテーブルが作成されていることがわかります。

DynamoDBのコンソールにもテーブルが作成されています。

クエリの実行

それでは、GraphQL APIにクエリを発行して動作をみてみたいと思います。公式ドキュメントを参考に、実行していきます。

コンソールの[Queries]を開くと、クエリが実行できるようになっています。

データの追加

まずはデータを追加します。muntationで以下のように入力して実行します。後ろのカッコで、レスポンスのデータを指定することができます。

mutation {
    createEvent(
        name:"My first GraphQL event"
        where:"Day 1"
        when:"Friday night"
        description:"Catching up with friends"
    ){
        id
        name
        where
        when
        description
    }
}

コンソールの右側に、レスポンスが表示されます。

これでイベントデータが1件、保存されました。DynamoDBで、テーブル:AppSyncEventTable-xxxxxxxを参照すると、アイテムが追加されていることが確認できます。

データの参照

続いて、イベントを参照してみます。getEventでキーとなるidを指定して実行します。

query {
    getEvent(id:"a5a6d6b0-ece3-480a-8df1-950b0663776d"){
        name
        where
        description
    }
}

先ほど追加したイベントが取得できました。

getAllEventsでは、イベントのリストを取得することもできます。

query getAllEvents {
    listEvents{
        items{
            id
            name
            when
        }
    }
}

データの削除

イベントを削除する、deleteEventもスキーマに定義されていますので試してみます。キーにidを指定して実行。

mutation {
    deleteEvent(
        id:"a5a6d6b0-ece3-480a-8df1-950b0663776d"
    ){
        id
        name
        where
        when
        description
    }
}

実行結果です。

確認のため、getAllEventsで取得してみます。

query getAllEvents {
    listEvents{
        items{
            id
            name
            when
        }
    }
}

イベントデータは削除されて、空になっています。

まとめ

新サービス、AWS AppSyncのサンプルスキーマからGraphQL APIを作成し、コンソールから簡単なクエリを試してみました。

GraphQL APIのイメージができたでしょうか?引き続き、GraphQLクライアントの作成やDynamoDB以外のデータストアを使うことも試していきたいと思います。