I’ve been reading and curating information on GraphQL as part of my regular research and monitoring of the API space for some time now. As part of this work, I wanted to take a moment and revisit my earlier thoughts about GraphQL, and see where I currently stand. Honestly, not much has changed for me, to move me in one direction or another regarding the popular approach to providing API access to data and content resources.
I still stand by my cautionary advice for GraphQL evangelists regarding not taking such an adversarial stance when it comes to the API approach, and I feel that GraphQL is a good addition to any API architect looking to have a robust and diverse API toolbox. Even with the regular drumbeat from GraphQL evangelists and significant adoption like the Github GraphQL API, I am not convinced it is the solution for all APIs and is a replacement for simple RESTful web API design.
My current position is that the loudest advocates for GraphQL aren’t looking at the holistic benefits of REST and are too wrapped in ideology, which is setting them up for similar challenges that linked data, hypermedia, and even early RESTafarian practitioners have faced. I think GraphQL excels when you have a well educated, known, and savvy audience who are focused on developed web and mobile applications–especially the latest breed of single page applications (SPA). I feel like, in this environment, GraphQL is going to rock it and help API providers reduce friction for their consumers.
This is why I’m offering advice to GraphQL evangelists to turn down the anti-REST and complete replacement/alternative for REST–it ain’t helping your cause and will backfire for you. You are better to off educating folks about the positive, and being honest about the negatives. I will keep studying GraphQL, understanding the impact it is making, and keeping an eye on important implementations. However, when it comes to writing about GraphQL, you are going to see me continuing to hold back, just like I did when it came to hypermedia and linked data, because I prefer not to be in the middle of ideological battles in the API space. I prefer showcasing the useful tools and approaches that are making a significant impact across a diverse range of API providers–not just echoing what is coming out of a handful of big providers, amplified by vendors and growth hackers looking for conversions.