Como usar GraphQL com Node.js?

GraphQL é uma alternativa ao REST que permite consultas flexíveis e eficientes em APIs Node.js.

Como usar GraphQL com Node.js?

O GraphQL é uma alternativa ao REST que permite consultas mais flexíveis e eficientes. Com ele, os clientes podem requisitar exatamente os dados necessários, reduzindo o tráfego de rede.

1. Instalando GraphQL no Node.js

Antes de começar, instale as dependências necessárias:

npm install express express-graphql graphql

2. Criando um servidor GraphQL básico

Crie um arquivo server.js:

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');

const schema = buildSchema(`
    type Query {
        hello: String
    }
`);

const root = {
    hello: () => 'Bem-vindo ao GraphQL com Node.js!'
};

const app = express();
app.use('/graphql', graphqlHTTP({
    schema: schema,
    rootValue: root,
    graphiql: true // Habilita a interface gráfica do GraphQL
}));

app.listen(3000, () => console.log('Servidor GraphQL rodando na porta 3000'));

Agora, acesse http://localhost:3000/graphql e execute a consulta:

{
    hello
}

A resposta será:

{
    "data": {
        "hello": "Bem-vindo ao GraphQL com Node.js!"
    }
}

3. Criando um esquema com tipos e resolvers

Podemos definir tipos mais complexos, como usuários:

const schema = buildSchema(`
    type Usuario {
        id: ID!
        nome: String!
        email: String!
    }
    type Query {
        usuarios: [Usuario]
    }
`);

const usuarios = [
    { id: 1, nome: 'João', email: 'joao@email.com' },
    { id: 2, nome: 'Maria', email: 'maria@email.com' }
];

const root = {
    usuarios: () => usuarios
};

Agora, podemos fazer a consulta:

{
    usuarios {
        id
        nome
        email
    }
}

E receberemos:

{
    "data": {
        "usuarios": [
            { "id": "1", "nome": "João", "email": "joao@email.com" },
            { "id": "2", "nome": "Maria", "email": "maria@email.com" }
        ]
    }
}

Conclusão

O GraphQL torna APIs mais eficientes ao permitir que clientes requisitem apenas os dados necessários, evitando respostas excessivas como no REST tradicional.

O uso do GraphQL tem crescido rapidamente, sendo adotado por empresas como Facebook, GitHub e Shopify. Ele oferece maior controle sobre os dados e elimina problemas comuns do REST, como overfetching e underfetching.

Com a possibilidade de definir queries dinâmicas, GraphQL melhora o desempenho da API, tornando-a mais flexível e eficiente para aplicações modernas.

Algumas aplicações:

  • Criação de APIs flexíveis
  • Melhoria na performance de consultas
  • Redução do tráfego de rede
  • Integração com aplicações front-end complexas
  • Uso em sistemas escaláveis e dinâmicos

Dicas para quem está começando

  • Use graphiql para testar suas consultas GraphQL.
  • Crie resolvers organizados para manter a API escalável.
  • Utilize GraphQL para APIs que precisam de flexibilidade.
  • Evite requisições muito grandes para não sobrecarregar o servidor.
  • Combine GraphQL com bancos NoSQL para melhor desempenho.

Contribuições de Lucas Fernandes

Compartilhe este tutorial: Como usar GraphQL com Node.js?

Compartilhe este tutorial

Continue aprendendo:

Como debugar aplicações Node.js e Express.js?

O debug no Node.js e Express.js pode ser feito com console.log, debugger do VS Code e Node Inspector para identificar problemas no código.

Tutorial anterior

Como documentar uma API Node.js usando Swagger?

O Swagger permite documentar APIs Node.js de forma interativa, facilitando testes e entendimento dos endpoints.

Próximo tutorial