Joana Tavares
labmm4a
Published in
7 min readMar 6, 2022

--

No restaurante do meio digital, quem é o meu empregado?

API REST vs GraphQL

Resumo

O que faria se entrasse num restaurante e não existissem empregados de mesa para dizer à cozinha o que pretendia almoçar? Seria desagradável, não? Com o meio digital acontece o mesmo.

Num mundo onde a tecnologia é cada vez mais valorizada e conectada com ela mesma, as API contam com um papel muito importante nesta conectividade. Sem elas, passava por cada um de nós ir à cozinha fazer o pedido diretamente.

E se eu lhe dissesse que existem por aí diversos tipos de API? Neste artigo vamos focar-nos essencialmente em duas específicas — REST e GraphQL — percebendo então a dinâmica delas e o porquê de, nos dias que correm, serem-nos tão úteis. Mesmo sem nos apercebermos da sua existência, as API encontram-se diariamente nas nossas vidas, e estas vieram para ficar.

API

Antes de entrar em tecnicismos, e para que entenda bem do que estou a falar, é necessário perceber o que é uma API. Application Programming Interface, ou em português, Interface de Programação de Aplicações, é uma forma de criar uma ponte entre duas interfaces, permitindo que estas comuniquem entre si de uma forma fácil e segura.

Quando estas surgiram eram muito diferentes daquilo que conhecemos hoje. Na altura, as API serviam apenas como bibliotecas para sistemas operativos. Hoje em dia, o grande motivo pela qual estas são tão desejadas é a sua capacidade para integrar funcionalidades e fornecer uma maior eficiência e rapidez aos softwares.

Façamos uma analogia: Quando vamos a um restaurante, esperamos ser atendidos pelo empregado de mesa para que possam fazer o nosso pedido à cozinha, que, por sua vez, o prepara para que o empregado o leve para a nossa mesa. Pois com as API é exatamente isso que acontece. O nosso host faz um pedido através de uma API ao servidor que nos vai devolver o pedido.

Um bom exemplo de uma das mais famosas API é a do Google Maps. Muitos sites e aplicações utilizam os dados desse serviço para fins próprios, como, por exemplo, mostrar a localização do seu espaço físico.

Para além disto, as API oferecem também a oportunidade de inovar e uma flexibilidade para simplificar o design de um site ou app, e até mesmo o seu próprio uso. Se bem desenvolvidas, podem ainda nunca pôr em causa a sua segurança.

Lógica de funcionamento de API
Figura 1 - Lógica de funcionamento de API

API REST

Quando pensamos em criar ou utilizar uma API, é muito provável que o nosso primeiro pensamento seja a API REST, também conhecida como RESTful. Esta sigla corresponde a Representational State Transfer, ou em português, Transferência Representacional de Estado, e é considerado o estilo de arquitetura standard e uma boa prática. A API REST, está, portanto, em conformidade com as restrições que este estilo exige, pois caso contrário, podemos criar problemas tanto para nós, como para quem usa a nossa plataforma.

Ficam aqui de seguida, algumas das restrições que esta arquitetura exige:

· Ter uma arquitetura cliente/servidor sem estado (uma vez que o protocolo HTTP contém a informação necessária), garantindo uma comunicação stateless;

· Armazenar os dados em cache;

· Ter um sistema por camadas (onde cada camada tem uma funcionalidade e responsabilidade específica);

· Ter uma sintaxe universal e uniforme;

Embora possamos acessar REST API através de vários protocolos de comunicação, o mais usado é o HTTP, permitindo que os desenvolvedores não precisem de nenhum software adicional. Deste modo, os caminhos dos terminais devem ser consistentes, pois os métodos HTTP indicam a ação que queremos realizar.

Com este tipo de API podemos acessar à informação totalmente atualizada, segura e com um tempo de resposta muito baixo. Pode-se dizer que com a API REST, as interfaces comunicam muito facilmente entre si. Uma das melhores amigas desta comunicação é a cache, que, ao ser usada, diminui a quantidade de dados que é necessária pedir ao servidor, agilizando ainda mais o processo.

Para além disto é ainda muito flexível, lidando com vários tipos de pedidos e sendo capaz de devolver vários tipos de formatos, o que não só responde às necessidades do criador, como também de todos os utilizadores.

API REST queries
Figura 2 - Lógica de funcionamento de API REST

Vantagens e desvantagens do uso:

Hoje em dia é muito importante saber gerenciar as aplicações front-end e back-end. Com a API REST podemos garantir uma separação entre o cliente e o servidor, o que não só nos permite manter a segurança dos dados, como também permite que acessemos à nossa base de dados em diferentes servidores sem pôr em causa o desenvolvimento da nossa aplicação. Para além disto é também uma solução multiplataforma, o que nos dá oportunidade de escolher a plataforma com que mais gostamos de trabalhar.

Contudo, não é assim tão prático e eficiente fazer pedidos com recurso a uma API REST, isto porque para que consigamos vária informação, é necessário fazer pedidos separados, o que leva o dobro do tempo tanto para pedir como para ser entregue a resposta e acaba por nos trazer também informação desnecessária.

Como pudemos ver, a API REST é uma API muito popular… Mas em 2015 e com o surgimento do GraphQL, nos dias que correm, esta opinião já não é tão constante assim.

GraphQL

Criada em 2012 pelo Facebook, mas apenas lançada ao público em 2015, esta é uma alternativa mais eficiente, simples e flexível à arquitetura REST. GraphQL é considerado uma linguagem de consulta para API que permite aos utilizadores receberem exatamente aquilo que solicitaram, sem mais nem menos. Não esquecer que base de dados e linguagem de consulta não são a mesma coisa. Enquanto a base de dados é um espaço com dados armazenados, a linguagem de consulta, como o nome indica, apenas realiza consultas à base de dados, embora possam ser usadas nos mesmos contextos.

Ao contrário da API REST, esta solução permite fazer várias pedidos de informação através de um único pedido, as chamadas queries.

Mas por que razões mudou o panorama das API?

· Estamos na era mais tecnológica alguma vez vivida. Com tantos dispositivos a serem usados, é necessário garantir um bom carregamento dos dados;

· A falta de flexibilidade. Como vimos anteriormente, as API REST têm de seguir um conjunto de normas, que, nem sempre estão presentes por parte dos clientes. Neste sentido é necessário que o desenvolvedor faça alterações para que passem então a atender aos requisitos;

· É também já muito difícil, nos dias de hoje, encontrar uma API que se encaixe com todos os nossos requisitos.

Com o GraphQL as instruções são algo que não nos assistem. Fica ao critério de cada desenvolvedor saber que linguagem de programação usar, como queremos armazenar os dados, entre outros.

GraphQL query
Figura 3 — Lógica de funcionamento de GraphQL

Vantagens e desvantagens do uso:

Ao contrário do REST, através de uma única query, somos capazes de obter toda a informação que queremos, e exatamente aquilo que queremos. É muito fácil adicionar novos campos a um pedido e a melhor parte é que é feito de forma rápida e eficaz.

Como podemos calcular não existem muitas desvantagens, uma vez que esta solução foi criada como uma melhoria, por assim dizer, da anterior. Apesar disto, o armazenamento em cache é mais complexo com esta solução do que a anterior — uma vez que usamos o mesmo URL para todas as requisições — bem como para o desenvolvedor no que toca à consulta de dados, pois muito do trabalho é direcionado para o servidor.

Depois disto, quase que parece fácil entender por que razões decidiram o Facebook, GitHub, PayPal e Twitter optar por uma alternativa à já existente. Mas e se, lado a lado, nenhuma delas for assim tão simples e vantajosa para todos nós? Haverá mesmo uma melhor que a outra?

API REST vs GraphQL

Estas são duas soluções extraordinárias. Conforme foi dito no início deste artigo, as API fazem parte do nosso quotidiano e vieram para ficar, pois como pudemos ver, são fáceis, úteis, e muito práticas.

GraphQL não surge como uma substituição à API REST, surge apenas como uma alternativa, por isso mesmo há que entender qual o empregado que se adequa melhor às nossas necessidades neste que é o restaurante do meio digital. A API REST é como ter vários empregados, cada um com a sua tarefa, pois só sabe fazer aquilo e nada mais. Em alternativa, o GraphQL é um empregado com mais capacidaes e funções. Consegue tratar de pedidos mais complexos sem a necessiade de mais empregados, contudo, a probabilidade que um dos pedidos não chegar em segurança é mais elevada.

Resumindo, enquanto o GraphQL fornece uma alternativa mais rápida, flexível e ótima para o desenvolvimento de uma aplicação mobile-first, a arquitetura REST permite-nos um melhor desenvolvimento no que toca a projetos mais poderosos, firmes e que envolvam cache.

Tendo em conta as necessidades dos seus projetos, saberia qual o melhor empregado para o atender?

Referências

What is an API?
What is a REST API?
Entenda o que é Rest API e a importância dele para o site da sua empresa
REST
What is a REST API design?
GraphQL
Learn GraphQL Fundamentals with Fullstack Tutorial
What is GraphQL?
GraphQL vs REST: which one is better?
GraphQL vs REST - A comparison

--

--