--- title: GraphQL --- # GraphQL Developed by Facebook and launched in 2015, GraphQL is an API standard defined by its use of a declarative request that returns only the data the client requested, in the shape they desire. Unlike traditional REST APIs, GraphQL allows the client side of an application to ask for the exact pieces of data it requires in a readable way. An alternative to the fixed endpoints of REST, its flexible approach makes aggregating data from multiple sources simpler, analytics are more refined and minimising the data fetched puts less pressure on slower networks, which speeds up responses for users GraphQL schemas are often coupled with frameworks such as [Relay](https://facebook.github.io/relay/) or [Apollo](https://www.apollographql.com/) to make these requests from the client. GraphQL powers how [GatsbyJS](https://www.gatsbyjs.org) fetches data. ## Installation From the command line run: ```shell npm init npm install graphql --save ``` ## Queries A query is the shape of the request that get back the exact data you asked for, not the whole object like in REST approach. You can write your query like that:- ``` { hero { name } } ``` and then the output is like that:- ``` { "data": { "hero": { "name": "R2-D2" } } } ``` note that the returned data has a special structure which starts with "data" and it has the same structure as the request. ## Mutations ## Resolvers ## Schemas ## Additional Resources - For tutorials and more information check out the GraphQL official site: [Getting Started With GraphQL.js](https://graphql.org/graphql-js/) - [GraphQL Site and Documentation](https://graphql.org/) - [How to GraphQL Tutorial](https://www.howtographql.com/)