More and more teams are choosing GraphQL instead of (or along with) REST for their web APIs. GraphQL queries give clients great flexibility in the way they request data from the server, preventing issues such overfetching or underfetching of data, and allowing multiple resources to be retrieved in a single request.In this course you’ll learn how to use GraphQL both on the server side and in client applications through practical examples in the form of full-stack JavaScript applications. You will be introduced to all the main GraphQL concepts like schema definition, Queries, Mutations, and Subscriptions, as well as to solution to common requirements such as handling authentication/authorization and client-side caching.The examples use Apollo Server with Node.js and Express on the backend, and Apollo Client with React on the frontend. The aim however is not just to cover specific GraphQL libraries, but to give you a more general understanding of the underlying concepts. For instance, Apollo Client is only introduced after learning how to write a simple client “by hand” to make sure you understand the GraphQL over HTTP format.That said, there is also a React-specific section at the end covering the latest Apollo Client with React Hooks integration library.This course assumes good knowledge of modern JavaScript, and ideally some familiarity with Node.js/Express and React.