Interfaces de programação de aplicativos, ou APIs, são uma maneira para programas de computador ou serviços se comunicarem entre si. Essa comunicação geralmente ocorre por meio de um endpoint de API, exposto por um programa que um cliente utiliza.

Este artigo comparará duas abordagens populares para construir APIs: representational state transfer (REST) API e Web API.

O que é REST API?

Ao contrário do que se pensa, REST API não é um protocolo. É uma arquitetura e é a arquitetura mais popular para o desenvolvimento de APIs. Como explicamos em “GraphQL vs REST: Tudo o que você precisa saber”, o REST é stateless, então nenhum dado ou status é armazenado entre as solicitações.

REST também define múltiplas restrições arquitetônicas para construir aplicativos que se comunicam através de HTTP:

  • Arquitetura cliente-servidor
  • Sem estado (stateless)
  • Interface uniforme
  • Possibilidade de cache
  • Arquitetura em camadas
  • Código sob demanda (opcional)

REST é mais fácil de usar do que outros protocolos ou arquiteturas de API. Ele também oferece inúmeros outros benefícios que fazem dele a primeira escolha para muitos desenvolvedores que constroem APIs:

  • Diversos formatos de mensagens: REST APIs são usadas principalmente com JSON para serialização de dados, mas funcionam com vários formatos de mensagem, incluindo JSON, HTTP, texto simples e XML. Este conjunto de opções lhe dá uma vantagem sobre protocolos como o Service Object Access Protocol (SOAP) que funciona principalmente com XML sobre HTTP, com opções como JSON sendo significativamente mais leves, mais flexíveis com suporte a arrays, e muito mais fáceis de analisar em comparação com XML.
  • Métodos HTTP: REST é tipicamente usado com qualquer um dos métodos GET, POST, PATCH, DELETE, ou PUT para a recuperação de dados e solicitações, dependendo da implementação do serviço. Estes métodos retornam códigos comuns de sucesso e falha HTTP. Outros métodos incluem OPTIONS, HEAD, e TRACE. Estes métodos são inconsistentes entre os serviços, já que alguns provedores podem implementar apenas um único método, de acordo com suas necessidades.
  • Arquitetura desacoplada: REST tem uma arquitetura cliente-servidor, portanto sua lógica é separada da apresentação – múltiplas partes podem ser trabalhadas simultaneamente sem interferência.
  • Escalabilidade: REST APIs são simples, o que as torna fáceis de usar. No entanto, se você precisar escalar, poderá criar novos pontos de extremidade para incorporar lógica mais complexa.
  • Cacheabilidade: Enquanto REST é stateless, a resposta do servidor no cliente pode ser armazenada em cache para evitar a repetição de solicitações redundantes. A resposta do servidor normalmente fornece informações sobre como o cache deve ser executado – com as solicitações de cache do cliente por um determinado período.
  • Segurança: Na maioria dos casos, os endpoints REST são expostos através de endpoints HTTPS, o que garante que toda a comunicação da API seja protegida usando TLS/SSL. REST também suporta outros esquemas de autorização e autenticação, como OAuth2 e JSON Web Tokens (JWT).

O que é Web API?

Web API é simplesmente uma interface para acessar os recursos do servidor através de HTTP. O termo refere-se ao conceito e não a qualquer tecnologia específica – uma Web API pode ser construída com várias tecnologias, como Java e ASP.NET. As Web APIs usam uma interface de código aberto e aproveitam muitas entidades de clientes como navegadores, smartphones, tablets e laptops.

Web APIs implementam especificações de protocolo com conceitos como cache, versionamento e diversos formatos de conteúdo. Uma Web API pode ou não ser uma REST API, dependendo de como ela é construída. A Web API são normalmente usadas em um sistema distribuído para fornecer serviços em diferentes dispositivos, tais como smartphones e laptops, sendo limitadas ao lado do cliente do aplicativo web.

Aqui estão dois exemplos de Web APIs amplamente utilizadas:

  • APIs do Google: Estas incluem as APIs do YouTube, que permitem aos desenvolvedores incorporar vídeos do YouTube em aplicativos, como sites, e a API do Google Maps, que permite aos desenvolvedores usar ou incorporar o Google Maps em páginas de internet usando interfaces JavaScript, ou Flash.
  • APIs do Twitter: Estas incluem a API de pesquisa no Twitter, que fornece métodos para interagir com a pesquisa no Twitter, e a REST API, que permite que você acesse os principais dados do Twitter.

Uma Web API é realizada como uma interação de sistema para sistema. Aqui está como os dados dentro de tal API podem fluir:

  1. O dispositivo cliente envia solicitações para o servidor web.
  2. O servidor web recebe a solicitação, a processa e depois a envia de volta para o dispositivo cliente para ser executada.
  3. A saída é entregue para o usuário.

As características benéficas das APIs da Web incluem:

  • Arquitetura leve: Web APIs são excelentes em dispositivos com largura de banda limitada, tais como smartphones.
  • Cabeçalhos de mensagens descritivos: As Web APIs têm cabeçalhos de mensagem descritivos, que podem conter informações sobre o tipo de conteúdo, esquema de segurança ou como lidar com o cache.
  • Suporta todos os tipos de dados: O corpo de uma web API pode ser usado para qualquer coisa, incluindo arquivos binários (vídeos, imagens, documentos), XML simples, JSON, e HTML.
  • Serviço orientado a recursos: Uma web API pode expor recursos de uma forma que corresponda com a arquitetura REST.
  • Configuração e instalação fácil: As Web APIs são fáceis de configurar e executar.

Web API vs REST API

Agora, vamos comparar essas duas APIs em mais detalhes.

Semelhanças na arquitetura

Web e REST APIs compartilham algumas semelhanças arquitetônicas – vamos dar uma olhada nelas.

  • Statelessness: As solicitações HTTP acontecem isoladamente e são fundamentalmente statelessness, pois cada solicitação contém informações suficientes para completá-la. Pedidos múltiplos são apenas associados uns aos outros através de informações compartilhadas, tais como cookies ou uma ID de sessão. A ausência de sincronização de estado reduz a complexidade e aumenta a performance, já que o servidor não precisa acompanhar as solicitações dos clientes. Solicitações simultâneas também podem ser escaladas através de múltiplos servidores.
  • Arquitetura em camadas: Ambos suportam um projeto de arquitetura em camadas onde a implantação de API, autenticação de requisição e armazenamento podem acontecer em múltiplos servidores.
  • Orientado a recursos: Em arquiteturas orientadas a recursos, os recursos são mapeados para Identificadores Uniformes de Recursos (URIs). Tanto a Web API quanto REST API são orientadas a recursos, por exporem os recursos por meio de URIs.
  • Cacheabilidade: Em REST e Web APIs, as consultas que retornam as mesmas informações toda vez que são chamadas são armazenadas em cache. Por exemplo, uma chamada de OPÇÃO em um endpoint será colocada em cache, pois a saída é a mesma independentemente de quantas vezes ela for chamada. Esta propriedade, conhecida como idempotence, é uma boa base para determinar quando os dados podem ser armazenados em cache. A idempotência é sempre considerada em REST, embora não tanto em APIs da web. Uma chamada idempotente de API é aquela onde os resultados nunca mudarão – não importa quantas vezes ela for chamada – mesmo com a possibilidade de algo mudar no servidor. Exemplos de métodos idempotentes incluem GET, HEAD, e OPTIONS.

Diferenças na arquitetura

Embora as Web APIs e REST APIs tenham padrões arquitetônicos similares, elas também têm algumas diferenças-chave.

  • Coordenação do lado do cliente e do lado do servidor: REST APIs têm arquitetura fracamente acoplada, permitindo o desenvolvimento independente do lado do cliente e do lado do servidor. Com a Web API, a mudança entre cliente e servidor são coordenadas de forma mais fina.
  • Interface: Dependendo dos detalhes de implementação, as REST APIs tendem a usar interfaces padrão da indústria. Web APIs usam interfaces personalizadas, dependendo do provedor da API.

Comunicação

Web APIs são flexíveis o suficiente para aproveitar qualquer estilo de comunicação, enquanto as REST APIs são usadas principalmente com JSON, XML e texto simples. Essas opções significam que as REST APIs funcionam bem para transmissão de dados textuais, como operações de criar, ler, atualizar e excluir (CRUD) em um banco de dados, mas são mais restritivas quando se trata de dados binários.

Web APIs oferecem uma experiência muito melhor para serviços que requerem dados binários – como serviços de streaming de música ou vídeo – uma vez que suportam mais formatos de mensagens.

Casos de uso

Embora estes formatos de API sejam intercambiáveis em muitos casos, existem alguns cenários onde um é melhor do que o outro:

  • Serviços e aplicativos em nuvem: Devido à sua natureza sem estado, as REST APIs são usadas em serviços de nuvem, pois componentes sem estado podem dimensionar e ser reimplantados para acomodar alterações. Os serviços de nuvem e as métricas geralmente são melhor expostos como REST APIs, pois há pouca necessidade de código personalizado.
  • Serviços de Streaming: Web APIs têm melhor suporte e baixa sobrecarga de dados binários de aplicativos em dispositivos com memória ou largura de banda restrita, sendo melhores para serviços que requerem streaming.
  • Manipulação de banco de dados (CRUD): É mais simples e muito mais fácil expor a funcionalidade CRUD sobre uma REST API do que uma Web API.

As REST APIs são difíceis de gerenciar para solicitações complexas que precisam acessar recursos que não estão organizados em uma hierarquia simples. Isso ocorre porque seus URIs referenciam recursos, o que significa que gerenciar esse tipo de situação envolve manipular caminhos de URI, parâmetros de consulta e o corpo da solicitação, o que vai contra o propósito da REST. Nesse caso, uma API Web é preferida, ao permitir personalização com suporte extensivo para cabeçalhos de resposta e solicitação URI.

Com suporte para técnicas como chamadas assíncronas – que não são facilmente implementadas usando a arquitetura REST – as Web APIs são a melhor opção para necessidades de API complexas.

Resumo

APIs Web e REST são usadas para construir aplicativos que fornecem recursos e se comunicam através de HTTP. Enquanto REST descreve restrições arquitetônicas sobre uma interface uniforme, as Web APIs são geralmente um conceito que pode ser RESTful, dependendo da implementação.

Tanto a Web quanto REST APIs são formatos leves que são intercambiáveis em muitas situações. Entretanto, comparadas às REST APIs, as Web APIs fornecem uma experiência mais personalizada e suporte para mais tipos de mensagens, e suportam interações complexas entre servidores e clientes que lidam com dados binários.

E com os serviços de hospedagem de aplicativos da Kinsta, você pode construir, testar e enviar seus projetos API para a nuvem mais rapidamente e com mais eficiência.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.