Três tipos de Web API que seu aplicativo pode consumir 📱

Heitor Souza
Inside SumUp
Published in
6 min readFeb 17, 2022

Em qualquer aplicativo moderno há a necessidade de comunicação com serviços para ler ou escrever informação.

Esse serviços fornecem contrato, WEB API, para que qualquer aplicativo seja capaz de consumir dados. Há diversas formas de expor sua API via internet por meio de protocolos que padronizem a comunicação Cliente/Servidor

Esses serviços podem ser consumidos por qualquer cliente já que são agnóstico à tecnologia, ou seja, Android, iOS, Flutter, React ou qualquer outra plataforma poderiam consumir esses mesmos dados bastando apenas seguir o protocolo de comunicação

Nesse post iremos abordar as três formas populares que aplicativos para celular utilizam para consumir dados via API:

WEB API

REST:

Se você já possui alguma experiência com desenvolvimento de software, com certeza já utilizou ou já ouviu falar de API REST. A nomenclatura REST designa para Representational State Transfer.

REST é a forma mais popular de expor uma API na web utilizando arquivos JSON como formato de comunicação de dados. Vários aplicativos no seu celular com certeza utilizam desse protocolo para ler e escrever seus dados.

REST API

Por meio de métodos ou verbos como GET, POST, PUT, PATCH e DELETE, uma API REST expõe seu serviço via web.

Vejamos um exemplo prático.

Vamos utilizar a API REST do Github para procurar nomes de repositórios.

https://api.github.com/search/repositories?q=android&per_page=1

O resultado da chamada acima é o seguinte JSON file:

Resposta REST API

Como podemos observar pela documentação da API não temos muito controle sobre a resposta, se por acaso quisermos manipular apenas algumas dos informações acima, o tratamento teria que ser feito após a recuperação dos dados.

A seguir iremos demonstrar que possível controlar os dados que requisitamos.

Para informações sobre a API REST do github, você pode acessar:

Para entender mais sobre API Rest, você pode consultar esse link:

GraphQL:

Com certeza REST é a forma mais popular para consumir web API, no entanto GraphQL está ganhando mercado a cada dia.

A sua forma de consumir dados tem um protocolo diferente, a sua semântica tem como base a busca como o próprio nome sugere, GraphQL — Query Language.

Ao invés do serviço expor todos dados de uma vez, o cliente no entanto requisita o que ele precisa apenas. Vejamos o exemplo:

consulta via GraphQL

Diferente de uma API REST, em GraphQL precisamos solicitar os dados que queremos consumir. Lembrando que podemos omitir campos que não tenhamos interesse, ou seja, poderíamos omitir o campo followers na consulta ilustrada na imagem.

Big techs utilizam GraphQL para expor suas API como: Facebook, Github e Pinterest.

Vamos continuar com mais um exemplo prático:

A API do Github usada acima também oferece a versão GraphQL. Pelo próprio site do Github podemos executar requisição no formato GraphQL.

Github GraphQL API

A semântica da API muda um pouco, nesse caso precisamos pedir os dados de forma explícita.

consulta em GraphQL

Agora é possível filtrar os campos que queremos no momento da requisição. Essa é uma das grandes vantagens dessa API.

Resposta da consulta

Para informações, você pode consultar:

O site oficial do GraphQL é uma excelente fonte para entender sobre essa API:

Outra fonte mais didática é:

GRPC:

Por último e não menos importante, temos gRPC. Ganhando popularidade no mundos dos aplicativos, o gRPC é uma forma fácil de consumir dados sem a necessidade de se preocupar com mapeamento da informação.

gRPC é a singla para Remote Procedure Call. Essa API segue o design da arquitetura RPC de sistemas distríbuidos, onde o Client pode executar métodos de forma remota à servidores, daí a tradução livre para RPC, Chamada Remota de Procedimento.

A arquitetura mais popular no mercado para API REST e GraphQL é uso de arquivo JSON como formato para transporte de dados. No entanto, existe uma forma comunicação que é mais performática com a utilização de arquivos Protocol Buffer ou proto. REST e GraphQL podem fazer uso arquivos proto, no entanto não é comum.

Por outro lado, o gRPC suporta de forma padrão arquivos proto combinando com suporte nativo à HTTP/2 em que arquivos binários são utilzados como forma de comunicação. No requisito performance o gRPC é superior comparado ao REST e GraphQL.

Com uso de proto files, há uma necessidade de um gRPC Stub, código gerado para cada linguagem de programação. É por meio dessa biblioteca gerada que podemos fazer comunição com o servidor.

gRPC — Cliente/Servidor

Github, por enquanto, não oferece suas APIs no format gRPC. No entanto, podemos simular criação de uma API em gRPC

Começando com arquivo Protocol Buffer:

Arquivo Protocol Buffer

Após a geração do stub, poderíamos consumir a nossa API da seguinte forma:

Consumindo API com gRPC

Como podemos observar, consumir uma API em gRPC é como estivéssemos consumindo uma API de uma biblioteca local. Uma das vantagens do gRPC é essa abstração no momento da comunição com os serviços externos.

O site do gRPC tem bastante informação sobre como implementar sua primeira API e links para vários exemplos no github:

Então, qual devo utilizar?

Dependente muito da necessidade da sua empresa ou da equipe. Todas as três formas têm vantagens e desvantagem.

REST é amplamente utilizado, mas tem algumas desvatagem como versionamento, performance e tráfego de informação.

GraphQL é muito bom para versionamento de APIs e controle de informação.

gRPC tem uma performance superior as três por utilizar arquivos binários para transporte de dados adicionando a facilidade para o tratamento de erro.

Há uma gama maior de variáveis precisam ser consideradas para efeitos comparação. O objetivo do artigo é apenas introduzir formas de expor seu web service.

Na SumUp utilizamos as três REST, GraphQL e gRPC, mas em produtos diferentes com equipes com necessidades distintas. Na SumUp temos autonomia para escolher a tecnologia que adequa mais as necessidades de cada equipe.

Na próxima vez que for criar uma nova WEB API, que tal utilizar uma dessas?!

Fontes:

https://www.ibm.com/br-pt/cloud/learn/rest-apis https://www.redhat.com/pt-br/topics/api/what-is-a-rest-api https://graphql.org/ https://www.howtographql.com/ https://grpc.io/ https://developers.google.com/protocol-buffers

Quer uma nova oportunidade de carreira com desafios globais? Confira nossas vagas em Engenharia e Produto e conheça mais sobre a SumUp.

--

--