It’s been a couple of years since Facebook started garnering attention for GraphQL, a protocol used by several of their scaleable web services, taking a strong, opinionated stand on how data delivery should be done. The approach is designed for flexibility and allows data projections to be requested by the consumer without the brittle restrictions associated with many conventional services.
Having worked with Micrososft’s LINQ for a time (I wrote a provider for a search engine project I was associated with while working on site for the company), I can’t help but see a few meaningful parallels with ODATA (a REST protocol - supporting both XML and JSON formats - designed with similar goals in mind). But GraphQL takes the journey another step forward and I am, so far, enchanted by its promise.
To be sure, there are some tradeoffs in using GraphQL, not the least of which is that it requires a bit more planning and anticipation of use cases that may not exist at the time of initial implementation. But extending a solution that uses GraphQL is approachable and such constraints are easily overcome in an evolutionary environment.