I wrote about GraphQL on here before [1]. I don't share the author's enthusiasm that it's "awesome" that "the schema is all backed by arbitrary code" -- I think this is a bad trade-off, because you still have to have some custom data-munging layer between your GraphQL acceptor and your backend datasources, just like you had to do to, but with different code, to implement a REST service.<p>However, once canned ORMs or datastores that natively understand GraphQL (like dgraph) become available, the ecosystem will definitely enable rapid integration -- provided we keep in mind the lessons learned about user-supplied queries from the early SQL-on-the-web days.<p>[1] <a href="https://hn.algolia.com/?query=niftich%20graphql&sort=byDate&type=comment" rel="nofollow">https://hn.algolia.com/?query=niftich%20graphql&sort=byDate&...</a>
Very similar. Typed. Get only requested properties. Request graph shape you want.<p><a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/_buckets_inside_buckets.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/...</a><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#_example_mapping" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/reference/curr...</a><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/reference/curr...</a><p>And I thought ElasticSearch API is REST. And it is JSON.
As mentioned in the first talk at the GraphQL summit (350+ attendees)<p>Github dumped REST for GraphQL
<a href="http://thenewstack.io/github-dumps-rest-graphql-api/" rel="nofollow">http://thenewstack.io/github-dumps-rest-graphql-api/</a><p>Rise of GrapQL
<a href="https://www.youtube.com/watch?v=bPlOGKPLtqM&list=PLpi1lPB6opQzSSOQU8JQLExuP1JUXPtmA" rel="nofollow">https://www.youtube.com/watch?v=bPlOGKPLtqM&list=PLpi1lPB6op...</a>
What about permissions? What if the logged in user is only allowed to see certain fields? Do I make a table that describes every possible field and which roles can access it? How do I know what's available to query, without reading docs? What about hypermedia? Do I have to gain knowledge about a large system's data structure to query it?