As any developer knows, there are no perfect solutions out there for creating an API. Each tool or platform will have its share of pros and cons. GraphQL is a great tool for developers overall, but of course there are a few pain points you might deal with during the development process. In this article, we'll break down some of the biggest pain points you might experience using GraphQL tools.
Right off the bat, if you're developing an API that is super simple and doesn't need any complex functionality, then GraphQL tools might not be the best choice for you. Instead, it might make things more complicated than they need to be. You'll be better off sticking to the typical REST API tools. However, if you need something a bit more complex, then GraphQL will be perfect for what you need and it'll help you create a great API.
Of course, making a simple API with GraphQL isn't impossible, just inconvenient. The following pain points, however, are super difficult to deal with and if you need these functionalities, GraphQL might not be your solution.
GraphQL returns responses in the shape of the query, so if you need a specific structure, you'll have to program a transformation to make it return that way.
GraphQL doesn't have infinite depth capabilities, so pagination will be necessary.
Other pain points don't pose nearly impossible barriers, but they can still cause difficulties. Things like network level caching and file upload handling. Though it isn't impossible to find solutions for these issues, it will still add some time to development.
All in all, GraphQL tools are exceedingly useful in a wide variety of API contexts, so whether or not you should use it just depends on your needs. Make sure to do further research on GraphQL to find out if it's truly the right tool for your needs and if it can help you create the type of API you're wanting.
Eldon Broady writes about database technologies, graph database, and modern API tools. You can find his thoughts at database solutions blog. For more information about hosted GraphQL backend, check out this site.