GraphQL is a slightly better REST

Sceptics 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 unversionned 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.