Introdução
Este artigo fala sobre web services REST. Esta linha de web services vem se tornando cada vez mais popular e é uma excelente opção para integração este sistemas de diferentes plataformas.
Neste artigo abordarei os principais conceitos deste tipo de serviços, utilizarei um exemplo de leilão do Mercado Livre para ilustrar o problema, e mostrarei detalhes da arquitetura e implementação.
Definição
- REpresentation State Transfer
- Estilo de arquitetura de software para sistemas distribuídos
- Termo proposto por Roy Fielding em sua tese de doutorado
- Web services com a arquitetura da internet
- Exploração extensa dos recursos do HTTP
Surgimento
Roy Fielding é um dos principais autores do protocolo HTTP, e ele propôs em sua tese de doutorado um estilo de arquitetura que faz extenso uso dos recursos oferecidos por este protocolo.
Enquanto nos serviços WS-I os recursos do HTTP são muito pouco explorados (inclusive porque o SOAP é independente de transporte), nos serviços REST umas das principais características é a utilização de muitos recursos do HTTP para elaborar um protocolo de comunicação conciso e claro.
REST ≈ TCP/IP - WS-I ≈ OSI
WS-I:
- Muitas especificações antes das implementações
- Muitos documentos e complexidade para definir as implementações
- Modelo semelhante a waterfall/cascata
REST:
- Conjunto de regras simples
- Especificações criadas após uso maduro
- Especificações por grupos de estudo do IETF
- Modelo incremental de desenvolvimento dos padrões/boas práticas
Motivação
Por que implementar serviços REST?
- Protocolos menos complexos
- Mais poder e flexibilidade nas comunicações
- Arquitetura amplamente disponível nas empresas
- Menos overhead de protocolo
Quando NÃO implementar serviços REST?
- Integrações com produtos fechados WS-*
- Quando WS-Transaction fizer sentido
- Quando WS-Security fizer sentido
- Quando não houver API HTTP razoável no servidor e/ou clientes-alvo