In a nutshell, GraphQL is a syntax that describes how to ask for data, and is generally used to load data from a server to a client.
This fairly trivial project aims at introducing a newcomer to GraphQL and the way it works. The code aims to explain the client and the server side of things. The source code has been heavily commented and documented in order to explain what's going on. It is highly recommended to read through it. Do not be afraid!
In case you’re not familiar, GraphQL is a language-independent specification for client-server communication. It lets you model the resources and processes provided by a server as a domain-specific language (DSL). Clients can use it to send scripts written in your DSL to the server to process and respond to as a batch.
People have claimed that GraphQL allows the client to demand sorting, paging, and filtering from the server. People have claimed that GraphQL can result in execution of arbitrary queries or joins. People have claimed that GraphQL exposes too much power with not enough server-side control. As I hope to convey through this post, these claims are false.