Even on a REST API, you can achieve the same pros
> - It makes working with describing the data you want easy > - It can save you bandwidth. Get what you ask for and no more
You can describe the fields you need (and I assume that is what reduces the bandwidth)
GET /users?fields=name,addresses.street,addresses.zip
> - It makes documentation for data consumers easy
I don't think so in practice. You can see Shopify's GraphQL documentation [1]. If anything it is more complex than their REST API docs
> - It can make subscription easier for you to use
Not too different from using something like SSE or even websockets and every decent web framework seems to have a decent implementation
> - Can let you federate API calls
So many ways to achieve this at the application layer (which is what GraphQL federation does with a Router). In the python world this could be separate WSGI apps or racks in ruby? And makes no difference if done at the load balancer level.
[1] https://shopify.dev/api/admin-graphql/2022-07/enums/localiza...
Okay, so don't make a poorly implemented one?
Also, no, it kind of won't. Let's look at what they are again
.
"It is actually a pain to use"
Not an API characteristic
.
"you'll have to manage two or more type systems if there are no code first generates in your language"
Not an API characteristic
.
"It doesn't support map/tables/dictionaries."
Not an API characteristic
.
"No clear path for Api versioning"
Not an API characteristic
.
Looks like it's actually zero for four
You're lucky, you're only visiting. I'm working in that alternate reality :-)