The GitHub GraphQL API
Neatly coinciding with GraphQL's announcement 'Leaving technical preview' [1].<p>In hindsight, sending a query, written in a query language from client to server seems obvious. So obvious, that I think I've seen it before...<p><pre><code>  select login, bio, location, isBountyHunter
  from viewer
  where user = ?
</code></pre>
It's ironic to me that it took Facebook reinventing SQL (or a graph database equivalent thereof [2][3][4]) and Github embracing it to legitimize this practice, since if you were doing this before, you were judged in the eyes of your peers and clients for not being "RESTful" (the fake-REST kind [5]), as if everyone was just itching to PUT and DELETE blobs of JSON of your poorly mapped resources to quasi-hardcoded, templated [6][7] URLs.<p>What's old is new again, but this time I'll take it.<p>[1] <a href="http://graphql.org/blog/production-ready/" rel="nofollow">http://graphql.org/blog/production-ready/</a>
[2] <a href="https://neo4j.com/developer/cypher-query-language/#_about_cypher" rel="nofollow">https://neo4j.com/developer/cypher-query-language/#_about_cy...</a>
[3] <a href="http://tinkerpop.apache.org/" rel="nofollow">http://tinkerpop.apache.org/</a>
[4] <a href="https://www.w3.org/TR/sparql11-query/" rel="nofollow">https://www.w3.org/TR/sparql11-query/</a>
[5] <a href="https://news.ycombinator.com/item?id=12479370#12480408" rel="nofollow">https://news.ycombinator.com/item?id=12479370#12480408</a>
[6] <a href="http://swagger.io/specification/#pathTemplating" rel="nofollow">http://swagger.io/specification/#pathTemplating</a>
[7] <a href="http://raml.org/developers/raml-200-tutorial#parameters" rel="nofollow">http://raml.org/developers/raml-200-tutorial#parameters</a>