Thanks for this deep piece on GraphQL and REST.
Sorry in advance for my English, I’m French native :)
I have been very intrigued like you about GraphQL and it made me revised my basics on REST.
What’s funny for me is that what you (and many people) consider as a “problem” of REST, aka, one URI per resource forcing multiple round trips, is actually…the very first and most important DESIGN PRINCIPLE of REST.
I wrote for years on my blog about the eternal pendulum of architectures from Mainframe to PC back to Web then apps then Facebook…
For me it’s no surprise that GraphQL came from Facebook as this technology is putting back in the server the logic that REST, building upon the Semantic Web’s “smart agents” vision of TBL, promoting intelligence in the clients…As Facebook wants (is ?) to be the Universal Mainframe of our time.
A good RESTful API make the server almost as dumb as a structured hard drive and let the clients get smarter.
A GraphQL API make the client dumber and dumber (is React+Relay+GraphQL super functional/declarative approach really different of an HTML page ?) and offload the smart on the fat server.
Being more of a “peer 2 peer / heavy client” guy, I can’t wait for the best RESTafarians to come up with requests multiplexing (HTTP/2 ?) and maybe a simple “declarative to fields picking” way in order to balance back this “fight” that is more a choice of design philosophy (clients vs. server) than a pure technical evolution.