Domine inglês técnico de programação em 2025, seja qual for seu nível. Inscrição gratuita

GraphQL e REST com Node.js: qual escolher para suas APIs?
Rocketseat

Rocketseat

2 min de leitura
node
Você já se perguntou qual arquitetura de API usar no seu projeto? REST ou GraphQL? Ambas têm suas vantagens e podem ser combinadas para atender às demandas mais específicas. Neste artigo, vamos explorar as diferenças, os casos de uso e como integrá-las em um mesmo projeto. Se você é novo em Node.js ou quer dominar o desenvolvimento de APIs, confira também nossos artigos relacionados:

REST: a fundação das APIs modernas

O que é REST?

REST é uma arquitetura de API baseada em HTTP. É simples, direta e segue princípios como:
  • Recursos como URLs (e.g., /users).
  • Métodos HTTP: GET, POST, PUT, DELETE.
  • Stateless (sem estado): cada requisição é independente.

Desafios do REST

  • Over-fetching: dados adicionais que não são necessários ao cliente podem ser enviados.
  • Under-fetching: múltiplas requisições para obter informações relacionadas.
  • Falta de flexibilidade: alterações no cliente podem exigir novos endpoints.

Exemplo com Node.js e Express

const express = require('express'); const app = express(); app.use(express.json()); app.get('/users', (req, res) => { res.json([{ id: 1, name: 'Diego' }, { id: 2, name: 'Mayk' }]); }); app.listen(3000, () => console.log('API REST rodando em http://localhost:3000'));
📽️
Para você que está começando a explorar o universo das APIs e quer entender conceitos fundamentais como API, REST e RESTful, convidamos você a assistir a um vídeo incrível do Mayk Brito. Nele, você vai aprender com exemplos práticos o que são esses conceitos e como aplicá-los no desenvolvimento de APIs.
Video preview

GraphQL: a linguagem de consultas para APIs modernas

O que é GraphQL?

GraphQL é uma linguagem que permite ao cliente definir exatamente quais dados deseja receber, resolvendo problemas comuns do REST.

Principais conceitos:

  • Schema: define a estrutura e os tipos de dados.
  • Resolvers: funções que retornam os dados.
  • Queries e mutations: consultas e alterações de dados.

Exemplo de queries e mutations:

Definição do Schema:
type Query { getUser(id: ID!): User getAllUsers: [User] } type Mutation { createUser(name: String!, email: String!): User } type User { id: ID name: String email: String }
Resolvers para Queries e Mutations:
const users = []; const resolvers = { Query: { getUser: (_, { id }) => users.find(user => user.id === id), getAllUsers: () => users, }, Mutation: { createUser: (_, { name, email }) => { const newUser = { id: users.length + 1, name, email }; users.push(newUser); return newUser; }, }, };
Testando as Queries e Mutations:
  • Query para obter todos os usuários:
query { getAllUsers { id name email } }
  • Mutation para criar um novo usuário:
mutation { createUser(name: "Mayk", email: "mayk@example.com") { id name email } }

Exemplo com Apollo Server

const { ApolloServer, gql } = require('apollo-server'); const typeDefs = gql` type Query { hello: String } `; const resolvers = { Query: { hello: () => 'Olá, GraphQL!', }, }; const server = new ApolloServer({ typeDefs, resolvers }); server.listen().then(({ url }) => console.log(`Server ready at ${url}`));
📽️
Se você ficou curioso sobre como construir APIs GraphQL utilizando Node.js, este vídeo é para você! Nele, você vai aprender desde os conceitos iniciais até a criação de dois aplicativos completos com GraphQL. É uma ótima oportunidade para entender como essa tecnologia pode transformar a forma como você consome e entrega dados.
Video preview
 

REST + GraphQL: usando o melhor dos dois mundos

Nem sempre é necessário escolher entre REST e GraphQL. Muitas vezes, a integração de ambas é a solução ideal.

Por que combinar REST e GraphQL?

  • Migração incremental: transforme APIs REST existentes em GraphQL gradualmente.
  • Flexibilidade: use GraphQL como uma camada para consolidar diferentes APIs REST.
  • Simplicidade: utilize REST para operações simples e GraphQL para consultas mais complexas.

Exemplo: Wrapping REST com GraphQL

Imagine que você tem uma API REST e quer expô-la como GraphQL. Aqui está como fazer isso com Apollo Server:

Definindo o Schema

type Query { user(id: ID!): User } type User { id: ID name: String email: String }

Resolver que faz requisição à API REST

const fetch = require('node-fetch'); const resolvers = { Query: { user: async (_, { id }) => { const response = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`); const data = await response.json(); return data; }, }, };

Configurando o Apollo Server

const { ApolloServer } = require('apollo-server'); const typeDefs = require('./schema'); const resolvers = require('./resolvers'); const server = new ApolloServer({ typeDefs, resolvers }); server.listen().then(({ url }) => console.log(`Server ready at ${url}`));
Essa abordagem permite reaproveitar APIs REST existentes e ainda aproveita a flexibilidade do GraphQL.

Quando usar REST ou GraphQL?

REST é ideal para:

  • Aplicações simples.
  • Operações CRUD diretas.
  • APIs públicas amplamente documentadas.

GraphQL brilha em:

  • Aplicações com requisitos dinâmicos de dados, como dashboards.
  • Mobile apps, onde a otimização do uso de dados é essencial.
  • Projetos que exigem interatividade ou tempo real.

Conclusão

Ao longo deste artigo, exploramos como REST e GraphQL podem ser usados para criar APIs robustas, eficientes e flexíveis. Aprendemos que cada tecnologia tem seus pontos fortes e que, em muitos casos, integrá-las pode ser a melhor escolha. Além disso, vimos como o Node.js, com suas diversas ferramentas, é uma plataforma ideal para implementar essas arquiteturas modernas.
Agora que você tem uma visão mais clara, que tal dar o próximo passo na sua jornada como desenvolvedor?

Domine as tecnologias que estão transformando o mercado!

Na formação Node.js da Rocketseat, você vai aprender na prática como construir arquiteturas modernas, eficientes e escaláveis, além de dominar tecnologias como Fastify, Prisma, NestJS, e muito mais! Confira o que espera por você:
  • Mais de 72 horas de conteúdo gravado.
  • +8 projetos profissionais para o seu portfólio.
  • Certificado de Especialista em Node.js validado pelo mercado.
  • Acompanhamento personalizado com tutorias individuais e em grupo.
  • Networking e mentorias para impulsionar sua carreira dev.
Ministrada pelo Diego Fernandes, co-fundador e CTO da Rocketseat, a formação é voltada para quem deseja construir projetos reais e se destacar no mercado.

Está esperando o quê?

Explore os planos e condições da Formação Node.js e dê o próximo passo na sua carreira dev hoje mesmo. Tem dúvidas? Fale com nosso time para esclarecer tudo e começar sua jornada agora mesmo!

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA