Introduction to graphql-request
graphql-request is a minimal GraphQL client for Node.js and browsers. It allows you to send GraphQL queries with just a single HTTP request and offers a simple API to execute queries and mutations against a GraphQL server.
Getting Started
To start using graphql-request
, first, install it:
npm install graphql-request
Basic Usage
Here’s a basic example of how you can use graphql-request
:
const { GraphQLClient, gql } = require('graphql-request');
const endpoint = 'https://api.spacex.land/graphql/';
const graphQLClient = new GraphQLClient(endpoint, {
headers: {
authorization: 'Bearer MY_TOKEN',
},
});
const query = gql`
{
launchesPast(limit: 5) {
mission_name
launch_date_utc
rocket {
rocket_name
}
}
}
`;
graphQLClient.request(query).then((data) => console.log(data));
Performing Mutations
You can also perform mutations with graphql-request
:
const mutation = gql`
mutation($name: String!, $rocket: String!, $date: String!) {
insert_launches(objects: { mission_name: $name, rocket: $rocket, launch_date_utc: $date }) {
returning {
id
mission_name
}
}
}
`;
const variables = {
name: 'Test Mission',
rocket: 'Falcon 9',
date: '2023-08-30T14:50:00+00:00',
};
graphQLClient.request(mutation, variables).then((data) => console.log(data));
Using Fragments
Fragments allow you to reuse parts of your GraphQL queries:
const fragment = gql`
fragment RocketDetails on Rocket {
rocket_name
rocket_type
}
`;
const queryWithFragment = gql`
{
launchesPast(limit: 5) {
mission_name
rocket {
...RocketDetails
}
}
}
${fragment}
`;
graphQLClient.request(queryWithFragment).then((data) => console.log(data));
Handling Errors
Handling errors with graphql-request
is straightforward:
graphQLClient
.request(query)
.then((data) => console.log(data))
.catch((error) => console.error(error));
App Example
Below is an example of a simple application using graphql-request
:
const express = require('express');
const { GraphQLClient, gql } = require('graphql-request');
const app = express();
const port = 3000;
const endpoint = 'https://api.spacex.land/graphql/';
const graphQLClient = new GraphQLClient(endpoint);
app.get('/launches', async (req, res) => {
try {
const query = gql`
{
launchesPast(limit: 5) {
mission_name
launch_date_utc
rocket {
rocket_name
}
}
}
`;
const data = await graphQLClient.request(query);
res.json(data);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});
And that’s just the beginning. graphql-request
makes it easy to interact with GraphQL APIs with a clean, simple syntax and powerful features. Give it a try in your next project!
Hash: fe2ba32927e7dc919a533b63177e7c37beebc2ee1edddfb5b6068f2919ff654e