GraphQLについて

www.adventar.org

アドベントカレンダー8日目です。公開した日は12月9日ですが、8日目です。 今回はGraphQLについて書きたいと思います。と言っても下を読んだことのメモみたいなものですが。

graphql.org

GraphQLとは?

  • GraphQLはAPIのためのクエリ言語で、 データ用に定義した型システムを使用してクエリを実行するためのサーバー側のランタイム。
  • GraphQLは特定のデータベースまたはストレージエンジンに結びついておらず、代わりに既存のコードとデータに基づく。
  • GraphQLサービスは、これらの型の型とフィールドを定義し、各型の各フィールドに関数を提供することによって作成される。

たとえば、ログインしているユーザが(me)であることと、そのユーザの名前を示すGraphQLサービスは、次のようになります。

type Query {
  me: User
}

type User {
  id: ID
  name: String
}
function Query_me(request) {
  return request.auth.user;
}

function User_name(user) {
  return user.getName();
}
  • GraphQLサービス(通常はWebサービス上のURL)が実行されると、GraphQLクエリを送信して検証および実行することが可能
  • 受信されたクエリは、定義された型とフィールドのみを参照していることを確認するためにまずチェックされ、次に提供された関数が実行され結果が生成される。
{
  me {
    name
  }
}

Could produce the JSON result:

{
  "me": {
    "name": "Luke Skywalker"
  }
}



かなり直感的にクエリを叩けるのはいいかなと思います。最近ではRESTfulではなく、GraphQLが次のトレンドになるとまで言われており、今後注目の言語じゃないかと思います。