As someone who has heavily used both REST and GraphQL in the past and actively, I find this comparison heavily similar to using raw HTML versus React. When it really boils down, GraphQL is just REST with types and the capability of performing multiple requests in one. Much like React is a way of creating component types from HTML elements.
GraphQL takes a bit more work to get setup and running, but it's soo worth it in the end if you value typing. One of the most impressive parts of GQL that REST isn't capable of having, is the vast tooling ecosystem enabled by a standardly typed data transfer model, the fact that anyone can write a library that can automatically hook into your model is incredibly powerful.
I find most people who have negative opinions on GraphQL simply haven't taken the dive yet to fully understand it, and they typically overthink what it actually does. In my opinion, if you're writing a progressive web/mobile app with relational data, you should hands down be using GraphQL.
I do find the typed query builder interesting, I don't think it's fully "there" yet in terms of functionality. I think they need to ditch the whole 'definitive single state' database model and just lean hard into the typed query builder. I'd seriously consider it if they were to implement similar functionality as the Java JOOQ library.
I've been using prisma for a couple months now at my employer. The longer I use it, the more frustrated I find myself with the tool.
Here's a list of a few things out of many that you can't do
with this tool (Prisma Migrate):
* Renaming columns/tables
* Migrating data from one column/table to another column/table.
* Write anything that isn't a table definition, such as procedures, functions, events, transactions, etc.
I think people are attracted to prisma at first because a single state definition of your database seems nice, but then once you wisen up you realize you're sacrificing a lot for it. There's just no way to effectively track changes like the name changing of a column between states with this sort of system.
Writing your migrations in SQL with tools like Flyway is a much more flexible and sustainable approach, in my opinion.
I find most people who have negative opinions on GraphQL simply haven't taken the dive yet to fully understand it, and they typically overthink what it actually does. In my opinion, if you're writing a progressive web/mobile app with relational data, you should hands down be using GraphQL.