.NET - Compreendendo o REST

 Neste artigo eu vou apresentar os conceitos básicos sobre o estilo arquitetural REST(Representation State Transfer).
 Compreendendo o estilo REST
 
A definição de REST (transferência de estado representacional) foi introduzida em 2000 por Roy Fielding em sua dissertação de doutorado.

REST é um estilo de arquitetura para a concepção de sistemas distribuídos. Não é um padrão, não é uma tecnologia, mas é um conjunto de restrições, um conjunto de regras, tais como :

  • Não possuir monitoração de estado (stateless)
  • Ter um relacionamento cliente/servidor
  • Ter uma interface uniforme

Embora atualmente sua implementação esteja relacionada com o HTTP ele não é restrito ao HTTP.

Ele se tornou uma alternativa mais leve e simples ao SOAP para realizar a comunicação entre serviços distribuídos entre plataformas e tecnologias diferentes. Embora o SOAP continue sendo usado o REST, a cada dia, aumenta o seu campo de atuação.

Diferente do SOAP que é baseado em ações o REST é baseado em recursos, e tem sua implementação para diversas tecnologias como Java, .NET, Node.js, Ruby, etc. baseada em 3 pilares:

  • Resources
  • URI
  • Representação

Na figura abaixo temos uma representação esquemática do modelo REST:

Princípios REST

  • Recursos - É qualquer coisa que possua um URI sendo um mapeamento conceitual para uma ou mais unidades. Um recurso pode ser um serviço que interage com qualquer coisa, como um catálogo, um dispositivo (por exemplo, uma impressora), um abridor de porta da garagem sem fio, ou um sistema interno como um CRM ou um sistema de compras.
  • Representação - Uma representação é um instantâneo do estado de um recurso em um ponto no tempo. Sempre que um cliente HTTP solicita um recurso, é a representação que é retornada, e não o próprio recurso
  • Mensagens - Usam métodos HTTP explicitamente. Por exemplo, GET, POST, PUT e DELETE.
  • Interações sem estado (Stateless) - Não armazenam nenhum contexto de cliente no servidor entre as solicitações. O cliente mantém o estado da sessão.
Métodos HTTP
 
Usa métodos HTTP para mapear operações CRUD (criar, recuperar, atualizar, excluir) para solicitações HTTP.
 
GET - Recupera informações.

As solicitações GET devem ser seguras e idempotentes, ou seja, independentemente de quantas vezes ela se repete com os mesmos parâmetros, os resultados são os mesmos.

 
Recupere um todos os livros :
GET /livros/
Recupere um livro com id igual a 1 :
GET /livros/1

POST - Solicita que o recurso na URI realize uma ação com a entidade fornecida.  Muitas vezes POST é usado para criar uma nova entidade, mas também pode ser usada para atualizar uma entidade. 
Crie um novo livro:  POST /livros
 

PUT -  Armazena uma entidade em um URI. Pode criar uma nova entidade ou atualizar uma existente.

Uma solicitação PUT é idempotente.
 
Modificar o livro com id igual a 1:  PUT /livros/1
 

 
DELETE -  Solicita que um recurso seja removido; no entanto, o recurso não tem que ser removido imediatamente. Pode ser uma solicitação assíncrona ou de longa duração.
 
Exclua um livro com id igual a 1: DELETE /livros/1
 

Nota:  Os métodos GET, PUT e DELETE são idempotentes.

Códigos de status HTTP

 
Códigos de status indicam o resultado da solicitação HTTP.
 
 1XX   Informativo
 2XX   Sucesso
 3XX   Redirecionamento
 4XX   Erro do cliente
 5XX   Erro do Servidor

Ex: Para ver uma lista dos códigos de status HTTP clique aqui : Códigos de status HTTP

Tipos de mídia (Media Type)
 
Os cabeçalhos HTTP Accept e Content-Type podem ser usados para descrever o conteúdo sendo enviados ou solicitado dentro de uma solicitação HTTP.

O cliente pode definir Accept como application/json, se ele está solicitando uma resposta no formato JSON.

Inversamente, quando enviar dados, a definição do tipo de conteúdo como application/xml diz o cliente que os dados que estão sendo enviados no request estão no formato XML.

Exemplos mais usados de media types:

  • application/json
  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/html

A implementação Microsoft

No caso da plataforma .NET podemos criar serviços baseados em REST usando WCF e o framework ASP .NET Web API.

Para saber mais sobre o assunto veja os links abaixo:

Segui a paz com todos, e a santificação, sem a qual ninguém verá o Senhor;
Hebreus 12:14

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?


  Gostou
?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti