terça-feira, 24 de janeiro de 2017

2 - [REST] Continuando com Rest


Você estuda mais a respeito de web services quando você lê sobre serviços REST. Ao estudar sobre o assunto, te parece uma técnica simples. Por exemplo, para realizar a listagem de clientes do seu sistema, você pode utilizar o navegador (seja este o Chrome , Firefox , Internet Explorer ou qualquer outro) para abrir a URL 

http://localhost:8080/cervejaria/clientes 

Ao fazer isso, você pode obter o seguinte resultado:



Mas, afinal, como fazer seu código interagir com esta listagem? O que aconteceu?

Os principios Básicos de REST

REST significa Representational State Transfer (ou Transferência de Estado Representativo , em tradução livre), e é um estilo de desenvolvimento de web services que teve origem na tese de doutorado de Roy Fielding. Este, por sua vez, é co-autor de um dos protocolos mais utilizados no mundo, o HTTP ( HyperText Transfer Protocol ). Assim, é notável que o protocolo REST é guiado (dentre outros preceitos) pelo que seriam as boas práticas de uso de HTTP:

•Uso adequado dos métodos HTTP;
•Uso adequado de URL’s;
•Uso de códigos de status padronizados para representação de sucessos ou falhas;
•Uso adequado de cabeçalhos HTTP;
•Interligações entre vários recursos diferentes.

O propósito deste é, portanto, exemplificar o que são estas práticas e guiar você, através das mesmas e fornecer os insumos de como construir seus próprios serviços, de maneira que estes sejam sempre tão escaláveis, reutilizáveis e manuteníveis quanto possível.

As fundações de REST

O “marco zero” de REST é o recurso. Em REST, tudo é definido em termos de recursos, sendo estes os conjuntos de dados que são trafegados pelo protocolo. Os recursos são representados por URI’s. Note que, na web, URI’s e URL’s são essencialmente a mesma coisa - razão pela qual vou usar os dois termos neste livro de forma intercalada.

Qual a diferença entre uma URL e uma URI?

URL significa Universal Resource Locator e URI, Universal Resource Identifier. Uma URI, como diz o próprio nome, pode ser utilizada para identificar qualquer coisa - dar um caminho para um determinado conteúdo, dar nome a este, etc. 

Já uma URL pode ser utilizada apenas para fornecer caminhos - sendo que uma URL é, portanto, uma forma de uma URI. É mais natural que URI’s que não sejam URL’s sejam utilizadas em outros contextos, como fornecimento de namespaces XML.

Tomando como exemplo o caso da listagem de clientes, é possível decompôr a URL utilizada para localização da listagem em várias partes:

http://localhost:8080/cervejaria/clientes

• http:// - Indica o protocolo que está sendo utilizado (no caso, HTTP);
• localhost:8080 - Indica o servidor de rede que está sendo utilizado e a porta
(quando a porta não é especificada, assume-se que é a padrão - no caso do
protocolo HTTP, 80);
• cervejaria - Indica o contexto da aplicação, ou seja, a raiz pela qual a aplicação
está sendo fornecida para o cliente. Vou me referir a esta, daqui em diante,
como contexto da aplicação ou apenas contexto;
• clientes - É o endereço, de fato, do recurso - no caso, a listagem de clientes.

Vou me referir a este, daqui em diante, como endereço do recurso. 

O protocolo

O protocolo, em realidade, não é uma restrição em REST - em teoria. Na prática, o HTTP é o único protocolo 100% compatível conhecido. 

Vale destacar que o HTTPS ( HyperText Transfer Protocol over Secure Sockets Layer ) não é uma variação do HTTP, mas apenas a adição de uma camada extra - o que mantém o HTTPS na mesma categoria que o HTTP, assim como qualquer outro protocolo que seja utilizado sobre o HTTP, como SPDY. As possíveis causas para esta “preferência” podem ser apontadas: o autor do HTTP também é o autor de REST e, além disso, o protocolo HTTP é um dos mais utilizados no mundo (sendo que a web, de maneira geral, é fornecida por este protocolo). 

Estes fatos promoveriam uma aceitação grande e rápida absorção de REST pela comunidade de desenvolvedores.

A URL

A URL escolhida deve ser única por recurso. Isto significa que, sempre que desejar obter a representação de todos os clientes, você deve utilizar a URL 

http://localhost:8080/cervejaria/clientes 

Realizar uma consulta nesta URL pode retornar dados da seguinte maneira:


Se você desejar, portanto, retornar um cliente específico, você deve utilizar uma URL diferente. Suponha, por exemplo, que você deseja retornar o cliente com id igual a 1. 

Neste caso, a URL seria 

http://localhost:8080/cervejaria/clientes/1 

Isso retornaria algo como:



Abraço.

_________________________________________________________________________________

Sumário dos posts completos:

1 - [REST] Introdução a WEB Services e Rest
2 - [REST] Continuando com Rest.
3 - [REST] Desenvolvendo. , ,

Nenhum comentário:

Postar um comentário