Demystifying GraphQL: A Quick Introduction to GraphQL for Modern Web Development

Ilolo Izu
4 min readMar 13, 2023

--

GraphQL has been gaining popularity in recent years as a modern approach to API design and data fetching. In this intro to GraphQL, I’ll cover everything you need to know to get started!

In 2012, Facebook revolutionized the world of API design and data fetching with the creation of GraphQL. Contrary to popular belief, GraphQL is not just for use with React — it can be implemented anywhere a client interacts with an API. This means that whether you’re building a web or mobile application, GraphQL has the potential to improve the efficiency and flexibility of your data fetching process.

GraphQL enables declarative data fetching, allowing clients to request precisely the data they need from an API. Unlike traditional RESTful APIs, GraphQL only exposes a single endpoint and responds only with the requested data, reducing the amount of network traffic and improving the efficiency of data transfer.

GraphQL is much more than a mere database technology — it’s a powerful query language designed specifically for APIs. While APIs are responsible for providing access to stored data in databases, GraphQL offers a flexible and efficient way to fetch data from APIs, making it an excellent tool for modern web development.

One common misconception about GraphQL is that it’s a database technology, but this couldn’t be further from the truth. In fact, GraphQL is a query language that can be used with any API, regardless of the underlying database technology. By minimizing data transfers over the network, GraphQL offers a significant performance boost for applications operating under conditions where bandwidth is limited. Additionally, with GraphQL, each client can request only the specific type of data it needs, further reducing unnecessary data transfers and improving performance.

While RESTful APIs provide a structured way of accessing resources on stateless servers, GraphQL was designed to address the need for greater flexibility and efficiency in client-server communication. With GraphQL, clients can request precisely the data they need, reducing network traffic and improving performance.

One of the key advantages of GraphQL is its ability to fetch multiple resources with a single request, eliminating the need for numerous fetch requests. For example, a single GraphQL query can request information about a specific user and their ID, returning all the necessary data in one go. This approach is much more efficient than traditional RESTful APIs, which often require multiple requests to fetch the same data. By minimizing network traffic and improving data fetching efficiency, GraphQL offers a significant performance boost for modern web applications.

Let’s compare a graphQL endpoint to a standard REST endpoint in Node.js

First, let’s consider a typical RESTful API endpoint in Node.js. Let’s say we have an endpoint that returns a list of users:

app.get('/users', (req, res) => {
User.find({}, (err, users) => {
if (err) {
res.status(500).send(err);
} else {
res.json(users);
}
});
});

This endpoint listens to a GET request on the /users route and returns all the users in the database. The endpoint is structured in a RESTful way, with a single route and HTTP method (GET) used to fetch the data.

Now, let’s compare this to a GraphQL endpoint. Here’s an example of a GraphQL schema that defines a User type and a users a query that returns an array of User objects:

const { GraphQLObjectType, GraphQLList, GraphQLString } = require('graphql');

const UserType = new GraphQLObjectType({
name: 'User',
fields: () => ({
id: { type: GraphQLString },
name: { type: GraphQLString },
email: { type: GraphQLString }
})
});

const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
users: {
type: new GraphQLList(UserType),
resolve: () => {
return User.find({});
}
}
}
});

With this schema, we can now define a single GraphQL endpoint that can handle any type of query a client might need. Clients can specify exactly which fields they want to fetch for each object, and the server will only return those fields.

For example, a client might query for a user’s name and email:

{
users {
name
email
}
}

This would return a JSON response containing an array of user objects, with only the name and email fields included.

GraphQL Logo

Overall, GraphQL provides a more efficient way to fetch data from APIs compared to traditional RESTful APIs. While RESTful APIs rely on a fixed set of routes and HTTP methods, GraphQL offers a single endpoint and a powerful query language that allows clients to specify exactly the data they need.

If you’re new to GraphQL and wondering what it’s about, this blog post is for you. I covered the basics of GraphQL, its key features and benefits, and how it compares to RESTful APIs. I also walked through an example of using GraphQL in the real-world. So whether you’re a developer, product manager, or simply curious about GraphQL, I hope you’ve enjoyed a quick introduction to this powerful technology.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Ilolo Izu
Ilolo Izu

Written by Ilolo Izu

Software Engineer 👨🏾‍💻 | Advocating for Minorities in STEM | Track & Field World Record Holder

No responses yet

Write a response