GraphQL is a slightly better REST

Skeptics often describe GraphQL as something only facebook-sized companies need, something complicated, or feel that its most talked-about features, such as asking exactly for the fields you need or unversioned APIs are not that useful or can already be done with REST.

I do not agree with this. In my experience, the main strength of GraphQL is that it allows developers to do the same things as with REST, but more easily, faster, and with better tooling.

So what things do we want when writing or using an API?

Most of the above can be done with a REST API, however, the tooling can be bad or even absent, or the solutions overly complicated. GraphQL comes out of the box with good solutions for all of these, for example:

Yeah, but GraphQL is more complicated

Not really:

Closing thoughts

Resources about GraphQL insist on “advanced” features such as the “graph” part, error handling, API versioning, or federation. I think this does GraphQL a disservice and is part of the reason people think it is useful only for facebook-like companies. Although the advanced features can be useful, where GraphQL shines the most is in making the simple, everyday things that are needed in every API easier.