Qual a diferença entre REST e SOAP?
REST e SOAP são duas abordagens diferentes para a transmissão de dados online. Em específico, eles definem como as interfaces de programação de aplicações (APIs) são criadas, possibilitando a comunicação dos dados entre aplicações web. REST (Representational State Transfer) ou “transferência de estado representacional” é um conjunto de princípios de arquitetura.
Já SOAP (Simple Object Access Protocol) ou 'protocolo de acesso a objetos simples” é um protocolo oficial mantido pela World Wide Web Consortium (W3C). A principal diferença é que SOAP é um protocolo e REST, não. Normalmente, uma API será baseada em REST ou SOAP, dependendo do caso de uso e das preferências do desenvolvedor.
REST: Representational State Transfer
REST é um conjunto de princípios de arquitetura que atende às necessidades de aplicações mobile e serviços web leves. Como se trata de um grupo de diretrizes, são os desenvolvedores que precisam implementar essas recomendações.
Quando uma solicitação de dados é enviada a uma API REST, ela é normalmente feita por meio do protocolo de transferência de hipertexto (hypertext transfer protocol, mais conhecido como HTTP). Após a solicitação ser recebida, as APIs projetadas para REST (chamadas de serviços web ou APIs RESTful) retornam mensagens em diversos formatos: HTML, XML, texto simples e JSON. JSON (notação de objetos JavaScript) é um formato de mensagem mais apropriado porque ele é leve e pode ser lido por qualquer pessoa, máquina e linguagem de programação (apesar do nome). Por isso, as APIs RESTful são mais flexíveis e mais fáceis de configurar.
Para ser RESTful, a aplicação precisa seguir seis diretrizes de arquitetura. É necessário que ela tenha o seguinte:
- Uma arquitetura formada por recursos, servidores e clientes.
- Comunicação stateless entre servidor e cliente, ou seja, nenhum conteúdo do cliente é armazenado no servidor entre as solicitações. Em vez disso, as informações sobre o estado da sessão são mantidas com o cliente.
- Dados que possam ser armazenados em cache para eliminar a necessidade de algumas interações entre o cliente e o servidor.
- Uma interface uniforme de componentes para as informações serem transferidas em um formato padronizado, em vez de específico às necessidades de uma aplicação. Roy Fielding, o criador da REST, descreve esse recurso como "a funcionalidade central que diferencia a arquitetura REST dos outros tipos baseados em rede".
- Uma limitação de sistema em camadas, onde as interações entre cliente e servidor são mediadas por níveis de hierarquia.
- Código sob demanda, o que possibilita que os servidores ampliem as funcionalidades de um cliente ao transferir os códigos executáveis. Como esse processo também pode reduzir a visibilidade, esta é uma diretriz opcional.
SOAP: Simple Object Access Protocol
SOAP é um protocolo padrão projetado originalmente para possibilitar a comunicação entre aplicações desenvolvidas em diferentes linguagens e plataformas. Como se trata de um protocolo, ele impõe regras integradas que aumentam sua complexidade e sobrecarga, desacelerando o tempo de carregamento das páginas. No entanto, esses padrões também proporcionam conformidade integrada, fazendo com que SOAP seja uma opção recomendada para casos empresariais. Isso inclui segurança, atomicidade, consistência, isolamento e durabilidade (ACID), os quais são um conjunto de propriedades para assegurar transações confiáveis de bancos de dados.
As especificações de serviço web comuns incluem:
- Segurança de serviços web (WS-Security): padroniza como as mensagens são protegidas e transferidas por meio de identificadores exclusivos chamados de tokens.
- WS-ReliableMessaging: padroniza o processamento de erros entre as mensagens transferidas por uma infraestrutura de TI não confiável.
- Endereçamento de serviços web (WS-Addressing): empacota informações de roteamento como metadados em cabeçalhos SOAP, em vez de armazená-las em camadas mais a fundo na rede.
- Linguagem de descrição de serviços web (WSDL): descreve a atividade de um serviço web e onde ele é iniciado e finalizado.
Quando uma solicitação de dados é enviada a uma API SOAP, ela pode ser processada por meio de qualquer protocolo de camada da aplicação: HTTP (em navegadores da web), SMTP (em e-mails), TCP e muito mais. No entanto, depois que a solicitação é recebida, as mensagens SOAP precisam ser retornadas como documentos XML: uma linguagem de marcação que pode ser lida por máquinas e pessoas. Um navegador não pode armazenar em cache uma solicitação concluída a uma API SOAP. Por isso, não é possível acessá-la depois sem fazer o reenvio à API.
SOAP e REST
Enquanto muitos sistemas legados ainda usam SOAP, REST surgiu depois e costuma ser vista como uma alternativa mais rápida nos casos baseados em web. REST é um conjunto de diretrizes que oferece uma implementação flexível. Já SOAP é um protocolo com requisitos específicos, como a mensageria XML.
As APIs REST são leves e ideais para contextos mais modernos, como a Internet das Coisas (IoT), desenvolvimento de aplicações mobile e serverless. Os serviços web SOAP oferecem segurança integrada e transações em conformidade que atendem a muitas necessidades empresariais, mas que também os deixam mais pesados. Além disso, muitas APIs públicas, como a do Google Maps, seguem as diretrizes REST.
Por que escolher a Red Hat?
A Red Hat fornece soluções de API modulares, leves e abrangentes, desenvolvidas com tecnologia e padrões open source e disponíveis para ambientes on-premise ou na nuvem. Elas desempenham um papel fundamental na otimização da TI, tornando-a mais flexível e capaz de agregar valor rapidamente.