
Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
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.

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.

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!
Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.
NewsletterReceba conteúdos inéditos e novidades gratuitamente
