What is GraphQL?
GraphQL is a query language for APIs. In this lesson, we go through an initial discussion on GraphQL and how GraphQL differs from traditional REST APIs.
📝 This lesson's quiz can be found - here.
🗒️ Solutions for this lesson's quiz can be found - here.
📖 This lesson's lecture slides can be found - here.
What we've built so far with our Node app conforms to what a REST (which stands for REpresentation State Transfer) API is. In traditional REST APIs, the client can interact with the server by accessing various endpoints to GET
, POST
, PUT
, or DELETE
data while leveraging the HTTP protocol.
To get all the listings in our app, we had to make a request to the /listings
endpoint. If we wanted our server to serve data for just one listing, we could implement a /listing/:id
endpoint (where :id
is the dynamic id
value of a certain listing). If we had mock user data, we could implement a /users
endpoint to return all users or a /user/:id
endpoint to serve user data for a certain user.
Now, let’s consider an example scenario. What if a client app needs to display some user information plus all the listings for that user. This client doesn’t have to be ours, someone else could have developed a web or mobile app that interacts with our API. How could this scenario play out with REST?
With an example REST API, the client could make a request to a /user/:id
endpoint to fetch the initial user data.
1. `/user/:id` - to fetch certain user data
Then the client could make a second request to something like a /user/:id/listings
endpoint to return all the listings for that user.
1. `/user/:id` - to fetch certain user data
2. `/user/:id/listings` - to fetch listings for certain user
So far, this isn't too bad since we're only making two requests. With that said, how would GraphQL fare here?
GraphQL#
This page is a preview of TinyHouse: A Fullstack React Masterclass with TypeScript and GraphQL