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 graphqlExemplo 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 Também na biblioteca
Validação de dados em C++: bibliotecas e métodos (libvalidate, nlohmann/json, Boost)
Configuração de aplicações Kotlin: bibliotecas e ferramentas para gerenciamento de configurações
openai-api-rs para Rust: guia completo com exemplos práticos
Métricas Prometheus em TypeScript: guia completo para client.js
Symfony/Console para PHP: guia completo com exemplos