5 de Março de 2025
REST vs GraphQL vs RPC: Quando Cada um Faz Sentido
O jeito mais útil de comparar estilos de API sem transformar escolha técnica em guerra de torcida.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Sistemas
O problema
Discussão sobre API vira dogma muito fácil.
Um lado fala que REST e o padrão serio. Outro fala que GraphQL resolve tudo. Outro trata RPC como se fosse proibido em sistema bem desenhado.
No fim, muita decisão sai pelo hype do time, não pelo formato real do problema.
O resultado costuma ser previsível:
- GraphQL onde ninguém precisava de flexibilidade de leitura
- REST forcado para ação que não e recurso
- RPC publico sem pensar em compatibilidade e observabilidade
Modelo mental
Esses tres estilos não competem pelo mesmo trabalho o tempo todo.
Pense assim:
- REST organiza a API em torno de recursos e estado.
- GraphQL organiza a leitura em torno do que o cliente quer montar.
- RPC organiza a interface em torno de ações e comandos.
Nenhum e automaticamente melhor.
Cada um otimiza uma conversa diferente.
Quebrando o problema
Antes de escolher, vale responder quatro perguntas:
- Quem consome essa API?
- O que domina essa fronteira: recurso, leitura agregada ou comando?
- Onde esta a dor real: overfetch, evolução, padronizacao, latência, simplicidade?
- Como essa interface vai ser observada, versionada e mantida?
Quando REST costuma fazer sentido
REST funciona bem quando:
- você tem recursos claros, como
users,orders,products - a interface precisa ser previsivel para vários clientes
- cache HTTP, semântica de metodo e ecossistema importam
- a API pode ser usada por parceiros ou publico externo
REST geralmente brilha pela simplicidade operacional.
Você olha para rota, metodo, status code e headers e a conversa fica compreensivel.
Quando GraphQL costuma fazer sentido
GraphQL faz mais sentido quando:
- ha muitas telas diferentes montando dados de vários lugares
- o frontend sofre com overfetch e underfetch
- você quer que o cliente escolha o shape da leitura
- o dominio combina com um grafo de dados navegavel
Mas GraphQL não e grátis.
Ele traz custo de schema, resolvers, autorização mais cuidadosa, controle de profundidade, caching menos obvio e risco de query cara.
Quando RPC costuma fazer sentido
RPC e muito bom quando:
- a operação e claramente uma ação, não um recurso
- a fronteira e interna entre serviços ou backend e backend
- você quer contrato tipado e direto
- o nome da operação comunica melhor do que um recurso genérico
Exemplos naturais:
reserveInventorycalculateShippingissueRefundgenerateInvoice
Forçar isso dentro de uma fantasia de recurso REST muitas vezes piora a clareza.
Exemplo simples
Imagine um ecommerce com tres fronteiras diferentes.
1. API publica para parceiros
Parceiros precisam listar produtos, consultar pedido e atualizar estoque.
Aqui, REST costuma ser uma boa escolha:
- semântica conhecida
- documentação fácil
- boa compatibilidade com vários clientes
- caching e status code ajudam bastante
2. Web app e app mobile do produto
Uma tela de produto precisa:
- informações do item
- estoque
- preco promocional
- recomendações
- avaliacoes
Outra tela precisa outra composição.
Aqui, GraphQL pode fazer sentido porque reduz a dor de montar leituras muito variadas para UI.
3. Comunicação interna entre serviços
O serviço de pedidos precisa pedir ao serviço de estoque:
reserveInventory
Isso e uma ação com semântica muito clara.
RPC encaixa melhor do que tentar esconder essa intenção atras de um recurso artificial.
Perceba a conclusão:
o mesmo sistema pode usar mais de um estilo sem contradição nenhuma.
Erros comuns
- Escolher GraphQL porque parece mais avancado.
- Tratar RPC como erro arquitetural mesmo quando a operação e claramente comando.
- Forcar tudo em REST e acabar com rota estranha para ações.
- Esquecer que API publica tem custo maior de compatibilidade e documentação.
- Assumir que um estilo precisa dominar 100 por cento do sistema.
Como um senior pensa
Quem tem mais experiência raramente pergunta “qual e o melhor estilo?”.
Pergunta outra coisa:
“Qual formato deixa essa fronteira mais clara, mais evoluivel e menos cara de operar?”
Essa troca de pergunta já melhora bastante a decisão.
Porque tira a conversa do gosto pessoal e leva para contrato, consumidor, manutenção e risco.
O que o entrevistador quer ver
Em entrevista, o avaliador normalmente quer ver se você sabe escolher por contexto.
Sinaliza maturidade quando você:
- explica o que cada estilo otimiza
- conecta a escolha ao tipo de consumidor
- fala de trade-off operacional, não só ergonomia
- admite mistura de abordagens quando a fronteira muda
Uma resposta forte costuma soar assim:
“Se eu tenho recurso claro e vários clientes, REST me ajuda. Se o problema principal e leitura flexivel para UI, GraphQL pode valer. Se a fronteira e interna e dominada por comandos, RPC costuma ser a interface mais honesta.”
API boa não escolhe moda. Escolhe a fronteira certa para o problema certo.
Resumo rápido
O que vale manter na cabeça
- REST, GraphQL e RPC organizam a conversa em torno de problemas diferentes.
- REST costuma brilhar em recursos e contratos previsiveis; GraphQL em leituras flexiveis; RPC em comandos claros.
- A mesma arquitetura pode usar mais de um estilo sem incoerencia.
- Escolha madura parte do consumidor, do tipo de operação e do custo operacional.
Checklist de pratica
Use isto ao responder
- Consigo explicar o que cada estilo otimiza sem virar torcida?
- Sei dizer quando uma ação interna encaixa melhor em RPC do que em REST forcado?
- Consigo justificar GraphQL por necessidade real de leitura flexivel e não por hype?
- Sei falar de API publica e contrato interno como contextos diferentes?
Você concluiu este artigo
Próximo passo
APIs e serviços com fronteiras claras Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.