!!! Overview[1] [{$pagename}] is a [protocol] and a query [Interface Definition Language] for [APIs] and a run-time for performing queries with your existing [data]. [{$pagename}] provides a complete and understandable description of the [data] in your [API], gives [clients] the power to ask for exactly what they need and nothing more, makes it easier to evolve [APIs] over time, and enables powerful developer tools. [{$pagename}] is a data query language developed internally by [Facebook] in [2012|Year 2012] before being publicly released in [2015|Year 2015] [{$pagename}] provides an alternative to [REST] and ad-hoc [Web Service] architectures [{$pagename}] allows the [client] to specify the properties of a [Resource] that is to be provided rather than the properties dictated by an [API], [schema], [Interface Definition Language] or the [server] author. !! Architecture[2] [{Image src='GraphQL/graphQL-architecutre.png' caption='Architecture' align=left width=1024 height=768 style='font-size: 120%}] \\ [{$pagename}] requires a [GraphQL Server] and a [GraphQL Client] which use a [JSON] based [GraphQL schema language]. [{$pagename}] [query] is a [string] that is sent to a server to be interpreted and fulfilled, which then returns [JSON] back to the client. \\[Example] [{$pagename}] [Request]: %%prettify {{{ { hero { id name friends { id name } } } }}} /% \\[Example] [{$pagename}] [Response]: %%prettify {{{ { "hero": { "id": "2001", "name": "R2-D2", "friends": [ { "id": "1000", "name": "Luke Skywalker" }, { "id": "1002", "name": "Han Solo" }, { "id": "1003", "name": "Leia Organa" } ] } } }}} /% [{$pagename}] queries access not just the properties of one [resource] but also smoothly follow references between them. While typical [REST] [APIs] require loading from multiple [URLs], [{$pagename}] [APIs] get all the [data] your app needs in a single request. Apps using [{$pagename}] can be quick even on slow mobile [network] connections. !! More Information There might be more information for this subject on one of the following: [{ReferringPagesPlugin before='*' after='\n' }] ---- * [#1] - [graphql|http://graphql.org/|target='_blank'] - based on information obtained 2017-03-12 * [#2] - [Introduction to GraphQL|https://learngraphql.com/basics/introduction|target='_blank'] - based on information obtained 2017-03-12