In an easy to understand way, GraphQL is a syntax that describes how to request data and be used to load data from a server to the client. GraphQL consists of three features that include allowing the client to determine exactly what data they need, making it easier to aggregate data from multiple sources and it uses a type system to describe the data.

The three biggest issues with the REST, there are too many endpoints, over-fetching (downloading superfluous data) and under-fetching (means that a specific endpoint doesnโt provide enough of the required information). In fact, not only that, handle data from multiple sources is also making the REST even harder.
For example, in the following image, it has too many endpoints to request. That is a list of phones on an e-commerce page. To get all data to show, at client needing a load list of data include name, review, and quantity. But the name stored in a database, the review stored in a third-party system and the quantity stored in another database. What should we do? keep more small requests like in picture or re-define one API to get all data.

Similarly, you need to have something for lunch and you want to order a burger. Then, booking a hotel for a long trip and ordering laundry. You need to call all three places on your own to address all three needs. And you must remember all communications is almost mandatory.

But think about it, if you work like a boss, and you have a personal secretary (her name is GraphQL). Still with three needs above, then what you need to do is order. ย You are going to talk: "Hey you, give me a burger for lunch. Please, I want to go to Ha Long Bay tomorrow, I need to book a hotel room there and order laundry today".
It's very easy. You don't need to know how to work in the background and you get the results you want.

In other words, GraphQL creates a standard language to perform these tasks.
GraphQL API is made up of 3 main parts: schema, queries, and resolvers. To keep the article simple, I will not explain it in this article. You can find out more about it on the GraphQL documentation page.
In conclusion, GraphQL is a syntax that describes how to request data and be used to load data from a server to the client with one endpoint. It keeps everything be simple for the client. In the next article, I will show you how it works and how to use it.