It's very well written and super pro-graphql. My favorite way to solve the under-fetching over-fetching problem was this method I wrote once called "decorate". It would go through the entire json object recursively and look for any fields ending in _id. It would then do a sql select where id in (id1,id2,id3,etc) and replace the foo_id with just foo and the real json of a foo. And you could give it a recursive level limit so you only go 2 levels down if foo has its own thing_id as well.<p>When I added a new rest endpoint I did NOT include "decorate" but I waited for the ios or android developer consuming the api to ask for it. Worked out great and it avoids all the complexity that often gets PUSHED down to the ios and android developer. If the goal is to write perfect graphql that solves the under-fetch over-fetch problem better than my decorate function, you don't end up with that. You get the mobile developers writing their dream queries and making a bigger mess! (Sometimes.)