GraphQLについて
アドベントカレンダー8日目です。公開した日は12月9日ですが、8日目です。 今回はGraphQLについて書きたいと思います。と言っても下を読んだことのメモみたいなものですが。
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が次のトレンドになるとまで言われており、今後注目の言語じゃないかと思います。