Primeiros passos com os serviços REST

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (16)  (0)

Este artigo tem como objetivo servir de ponto de partida para o desenvolvedor que deseja se aventurar no universo REST. Aqui temos uma introdução aos conceitos básicos dessa abordagem para criação de web services.

Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Solução Completa.
Primeiros passos com os serviços REST
Este artigo tem como objetivo servir de ponto de partida para o desenvolvedor que deseja se aventurar no universo REST. Aqui temos uma introdução aos conceitos básicos dessa abordagem para criação de web services que vem ganhando cada vez mais espaço no mercado. Assim, aprendemos como implementar um serviço REST em Java e como consumir esse serviço.

Em que situação o tema é útil
A utilização de serviços REST tem crescido amplamente e gigantes como Google, Facebook, Yahoo!, Amazon, eBay e Microsoft vêm aderindo e suportando essa tecnologia. Portanto, nesse cenário em que nos encontramos, onde o conceito de “serviço” ganha força a cada dia, REST é atualmente uma opção importantíssima a se considerar na hora de definir como será disponibilizado um serviço. O desenvolvedor que conhece tecnologias REST com certeza estará um passo à frente dos demais.

A interoperabilidade entre sistemas tem sido uma tendência bem evidente do mercado de TI, de modo que praticamente qualquer aplicação corporativa desenvolvida nos dias de hoje possui integrações com outros sistemas, seja para backup, e-mail, storage, conversão de arquivos, busca de informações, processamento de imagens ou qualquer outra dentre um incontável número de possibilidades. Também é notório o destaque que conceitos como web service, SOA, SaaS, PaaS, entre outros, vem ganhando no cenário atual de desenvolvimento de software.

Hoje em dia é muito comum ouvir alguém falar que vai fornecer ou utilizar um serviço, mas o que, de fato, é um “serviço”? Será que todos nós estamos falando a mesma língua?

Quando você ouve alguém falar em implementar ou utilizar um serviço, em 99% dos casos essa pessoa está se referindo a web services, e quando alguém fala em web services, temos a probabilidade de 99% de essa pessoa estar se referindo a serviços SOAP (Simple Object Access Protocol). Isto se deve ao fato de que o protocolo SOAP foi, e de certa forma ainda continua sendo, o mais utilizado para a criação de web services, de um modo tal que para muitos o termo web service está necessariamente atrelado ao protocolo SOAP. Contudo, veremos neste artigo que o conceito de web service é bem mais abstrato e que podemos criar/utilizar esses “serviços da web” usando outros protocolos e tecnologias, inclusive próprios.

No decorrer do artigo, veremos uma breve introdução do modelo REST para criação de web services, bem como os recursos oferecidos pelo Java para esse propósito. Como prova de conceito, desenvolveremos uma agenda de contatos, utilizando o framework Jersey.

O que é REST?

Conceitualmente falando, o modelo REST (REpresentational State Transfer) representa nada mais que uma “nova” possibilidade para a criação de web services, cujas principais diferenças em relação ao modelo tradicional (SOAP) estão na utilização semântica dos métodos HTTP (GET, POST, PUT e DELETE), na leveza dos pacotes de dados transmitidos na rede e na simplicidade, fazendo desnecessária a criação de camadas intermediárias (Ex.: Envelope SOAP) para encapsular os dados.

Devido, irônica e principalmente, à sua simplicidade em relação ao SOAP (que leva Simple no nome), os serviços REST vêm ganhando espaço no mercado e têm sido utilizados por gigantes como Google, Facebook, Yahoo!, Amazon, eBay, Microsoft, dentre outros. Portanto, saber REST nos dias atuais é de fundamental importância para qualquer desenvolvedor ou empresa. Vejamos então como essa coisa toda funciona.

Nota: O criador do modelo REST é nada menos que Roy Fielding, um dos principais autores da especificação HTTP e cofundador do projeto Apache HTTP Server. A criação do termo REST, apresentado pela primeira vez em 2000 na sua tese de doutorado, foi uma forma de dizer: “Vocês estão subestimando o HTTP. Aprendam como utilizá-lo da forma correta!”.

No mundo REST, uma requisição HTTP é equivalente a uma chamada de um método (operação) em um objeto (recurso) residente no servidor.

Como principais características de uma requisição REST, podemos destacar:

· O método HTTP é utilizado para determinar a operação a ser realizada em um determinado recurso. Em geral, utiliza-se o GET para recuperar, POST para criar, PUT para alterar e DELETE para apagar;

· O recurso, por sua vez, é indicado na URL da requisição;

· Parâmetros podem ser passados na própria URL e/ou no corpo na requisição;

· Os tipos de dados utilizados na requisição e na resposta devem ser acordados entre o servidor e o(s) cliente(s). JSON e XML estão entre os tipos mais utilizados.

Nota: Além dos famosos GET e POST, o protocolo HTTP define os métodos: CONNECT, HEAD, PUT, DELETE, TRACE e OPTIONS. Ainda é possível criar extensões e consequentemente a adição de novos métodos. A especificação RFC 5789 define o método PATCH, por exemplo.

Nota: Existe certa divergência em relação à função dos métodos HTTP POST e PUT no contexto de serviços REST. Alguns autores defendem o uso do POST para criação e PUT para atualização, já outros pensam o inverso. Temos também o PATCH, que tem o propósito de servir para atualizações parciais de um objeto. Em todo o caso, na prática, o provedor do serviço é quem irá decidir qual abordagem utilizar.

Para entendermos melhor, vamos imaginar um exemplo de um serviço de bookmark, onde o usuário pode guardar seus links favoritos, e suponhamos que este esteja localizado na URL http://mybookmarks.com. Para recuperarmos a lista de todos os bookmarks, pensando segundo a filosofia REST, teríamos que utilizar o método HTTP GET na URL que representa a lista. Por exemplo:

GET http://mybookmarks.com/bookmarks

A resposta dessa requisição poderia ser algo do tipo:

<bookmarks>

<bookmark>

<id>1</id>

<title>Google</title>

<url>http://google.com</url>

</bookmark>

<bookmark>…</bookmark>

</bookmarks>

Lembrando que o formato, XML no exemplo, é livre e definido pelo provedor do serviço. Caso esse mesmo serviço fornecesse a saída em JSON, o resultado da requisição que fizemos seria algo como:

[

{“id” : 1, “title” : “Google”, “url” : “http://google.com” },

{“id” : 1, “title” : “Yahoo!”, “url” : “http://yahoo.com” }

]

Se ao invés da lista, quiséssemos recuperar apenas um bookmark específico, poderíamos utilizar o HTTP GET para uma URL que representasse esse único registro, por exemplo:

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?