GraphQL em Node.js: Guia Completo da Biblioteca graphql-http

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca GraphQL JavaScript (Node.js): graphql-http



GraphQL é uma linguagem de consulta para APIs, desenvolvida pelo Facebook, que permite aos clientes solicitar apenas os dados de que precisam. No ecossistema Node.js, uma das principais bibliotecas para implementar servidores GraphQL é a graphql-http. É uma ferramenta leve, mas poderosa, que permite criar APIs de alto desempenho com sobrecarga mínima. Ao contrário de soluções mais pesadas, como o Apollo Server, o graphql-http oferece flexibilidade e controle total sobre os manipuladores HTTP.



O que é graphql-http?



graphql-http é uma biblioteca oficial da comunidade GraphQL que fornece uma maneira simples de conectar o GraphQL a qualquer servidor HTTP Node.js. Ela não depende de um framework específico (Express, Koa, Fastify, etc.), tornando-a uma escolha universal. A principal função da biblioteca é receber uma requisição HTTP de entrada, analisá-la, executar a consulta GraphQL e retornar uma resposta estruturada.



Instalação e configuração



Para começar, instale a biblioteca via npm:



npm install graphql-http graphql


Exemplo mínimo de servidor em Node.js puro (sem Express):



const http = require('http');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');

// Definindo o schemaconst schema = buildSchema(` type Query { hello: String user(id: Int!): User } type User { id: Int name: String email: String }`);

// Resolversconst rootValue = { hello: () => 'Olá, mundo!', user: ({ id }) => ({ id, name: `Usuário ${id}`, email: `user${id}@example.com` })};

// Criando o manipuladorconst handler = createHandler({ schema, rootValue });

// Servidor HTTPconst server = http.createServer((req, res) => { if (req.url === '/graphql') { handler(req, res); } else { res.writeHead(404); res.end('Not Found'); }});

server.listen(4000, () => { console.log('Servidor rodando em http://localhost:4000/graphql');});


Integração com Express



A maioria dos desenvolvedores usa Express. A integração do graphql-http com Express é trivial:



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

const schema = buildSchema(` type Query { books: [Book] } type Book { title: String author: String }`);

const books = [ { title: 'Guerra e Paz', author: 'Liev Tolstói' }, { title: 'Crime e Castigo', author: 'Fiódor Dostoiévski' }];

const rootValue = { books: () => books};

const app = express();

app.all('/graphql', createHandler({ schema, rootValue }));

app.listen(3000, () => { console.log('Express + GraphQL em http://localhost:3000/graphql');});


Principais recursos e vantagens



  • Flexibilidade de roteamento: você decide em qual endpoint o GraphQL estará disponível.
  • Suporte a todos os métodos HTTP: requisições GET e POST são processadas corretamente.
  • Validação integrada: a biblioteca verifica automaticamente se as consultas estão de acordo com o schema.
  • Desempenho: consumo mínimo de memória e alta velocidade de processamento.
  • Extensibilidade: é possível adicionar middleware para autenticação, registro de logs e cache.


Trabalhando com mutações e subscriptions



Além de consultas (Query), o graphql-http suporta mutações (Mutation) para alterar dados. Exemplo de schema com mutação:



const schema = buildSchema(`  type Query {    message: String  }  type Mutation {    setMessage(newMessage: String!): String  }`);

let message = 'Sta

Recommendations