GraphQL in Apache Sling - but isn't it the opposite of REST?

GraphQL is often presented as the opposite of REST, but how could a query language be the opposite of an architectural style?

Opposing technologies and tools is rarely productive, and although Sling is firmly based on REST principles, it makes absolute sense to take advantage of GraphQL's rich query language and "one request does it all" interaction model in Sling.

In this talk we'll present a GraphQL scripting engine for Sling, which enables GraphQL queries either "hidden" on the server side, for more control, or provided by the clients in the more traditional way to provide the full flexibility of the query language.

Generating GraphQL schemas dynamically, based on Sling Resource Types, Sling Models and scripted schemas, provides a lot of flexibility in mapping Sling content to the outside world and makes the query subsystem modular and flexible.

This talk will help you understand where GraphQL fits in Sling's RESTful view of the world and help you choose between server-side or client-side queries depending on your use cases. The source code of the engine and all examples will be available.