Apollo Server para JavaScript (Node.js): guia completo com exemplos
Apollo Server é uma biblioteca poderosa e flexível para criar servidores GraphQL em Node.js. Ela faz parte do ecossistema Apollo GraphQL e oferece aos desenvolvedores um conjunto de ferramentas práticas para construir APIs performáticas, escaláveis e fáceis de manter. Se você conhece REST, pode pensar no GraphQL como uma alternativa onde o cliente decide quais dados precisa e o servidor retorna exatamente o que foi solicitado. O Apollo Server cuida de toda a parte operacional: parsing de consultas, validação de schema, execução de resolvers e formatação da resposta.
Por que usar o Apollo Server? Primeiro, ele simplifica drasticamente o desenvolvimento de servidores GraphQL. Você não precisa escrever parsers, validadores ou se preocupar com segurança (proteção contra SQL injection, limitação de profundidade de consulta, etc.) — tudo isso já está embutido. Segundo, o Apollo Server suporta diversas integrações: com Express, Fastify, Koa, AWS Lambda, Azure Functions e outras plataformas. Isso significa que você pode implantar o servidor em qualquer lugar — desde uma aplicação local simples até uma função serverless. Terceiro, a biblioteca é ativamente mantida, possui uma grande comunidade e documentação excelente, tornando-se o padrão de facto para GraphQL em Node.js.
Neste artigo, vamos abordar detalhadamente a instalação, os métodos principais, escrever vários exemplos práticos e dar dicas de performance. O conteúdo será útil tanto para iniciantes que estão começando com GraphQL quanto para desenvolvedores experientes que desejam aprofundar seus conhecimentos sobre o Apollo Server.
1. Instalação
Para trabalhar com o Apollo Server, você precisa do Node.js versão 14 ou superior. A instalação é feita via npm (ou yarn). O pacote principal é o @apollo/server. Você também precisará do graphql — o núcleo da linguagem GraphQL, sem o qual o Apollo Server não funciona.
npm install @apollo/server graphql
Se você planeja usar o Apollo Server com Express (a opção mais popular), instale também:
npm install express cors body-parser
npm install @as-integrations/express
Para trabalhar com TypeScript (recomendado), instale os tipos:
npm install --save-dev typescript @types/node @types/express
2. Início rápido — exemplo mínimo funcional
Vamos criar um servidor GraphQL simples que cumprimenta o usuário. Crie um arquivo index.js e adicione o seguinte código:
import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';
// 1. Define o schema (typeDefs)
const typeDefs = `#graphql
type Query {
hello: String
}
`;
// 2. Define os resolvers
const resolvers = {
Query: {
hello: () => 'Olá, mundo! Este é o Apollo Server!',
},
};
// 3. Cria a instância do servidor
const server = new ApolloServer({
typeDefs,
resolvers,
});
// 4. Inicia o servidor
const { url } = await startStandaloneServer(server, {
listen: { port: 4000 },
});
console.log(`🚀 Servidor rodando em: ${url}`);
Execute o servidor com o comando node index.js (se estiver usando ES modules, adicione "type": "module" no package.json). Abra o navegador e acesse http://localhost:4000. Você verá a interface Apollo Sandbox, onde pode executar a consulta:
query {
hello
}
A resposta deve ser: { "data": { "hello": "Olá, mundo! Este é o Apollo Server!" } }. Parabéns, seu primeiro servidor GraphQL está funcionando!
3. Métodos/funções/classes principais
Vamos explorar os elementos-chave do Apollo Server. Para cada um, fornecemos a assinatura, uma breve descrição e um exemplo.
3.1. new ApolloServer(config)
Assinatura:
Também na biblioteca
ORM para Swift (iOS/macOS): comparação e exemplos de uso
Agendador de tarefas em PHP: biblioteca cron‑expression para agendamento flexível
Filas de Tarefas em Java: Visão Geral e Implementação com java.util.concurrent
Filas de Tarefas para TypeScript: Bull, Bee-Queue e Processamento Assíncrono
ORM para Go (Golang): comparação entre GORM, Ent e sqlx com exemplos
Recommendations