REST API Tutorial (Português)

REST é um acrônimo para REpresentational State Transfer. É um estilo arquitetônico para sistemas hipermédia distribuídos e foi apresentado pela primeira vez por Roy Fielding em 2000 em sua famosa dissertação.

Como qualquer outro estilo arquitetônico, o descanso também tem suas próprias 6 restrições de orientação que devem ser satisfeitas se uma interface precisa ser referida como repousante. Estes princípios estão listados abaixo.,

Guiding Principles of REST

  1. Client-server – by separating the user interface concerns from the data storage concerns, we improve the portability of the user interface across multiple platforms and improve scalability by simplifying the server components.
  2. apátrida-cada pedido de cliente para servidor deve conter todas as informações necessárias para entender o pedido, e não pode tirar proveito de qualquer contexto armazenado no servidor. O estado da sessão é, portanto, mantido inteiramente sobre o cliente.,
  3. cacheable – Cache constraints require that the data within a response to a request be implicitly or explicitly labeled as cacheable or non-cacheable. Se uma resposta é cacheável, então um cache do cliente é dado o direito de reutilizar os dados de resposta para solicitações posteriores equivalentes.interface uniforme-aplicando o princípio de engenharia de software de generalidade para a interface componente, a arquitetura global do sistema é simplificada e a visibilidade das interações é melhorada., A fim de obter uma interface uniforme, múltiplas restrições arquitetônicas são necessárias para orientar o comportamento dos componentes. O resto é definido por quatro restrições de interface: identificação de recursos; manipulação de recursos através de representações; mensagens auto-descritivas; e, hypermedia como o motor do Estado de Aplicação.
  4. Sistema Em Camadas-o estilo do sistema em camadas permite que uma arquitetura seja composta de camadas hierárquicas, restringindo o comportamento do componente de tal forma que cada componente não pode “ver” além da camada imediata com a qual eles estão interagindo.,
  5. Code on demand – opcional) – REST permite que a funcionalidade do cliente seja estendida baixando e executando código na forma de applets ou scripts. Isso simplifica os clientes, reduzindo o número de recursos necessários para a pré-implementação.

Resource

The key abstraction of information in REST is a resource. Qualquer informação que possa ser nomeada pode ser um recurso: um documento ou imagem, um serviço temporal, uma coleção de outros recursos, um objeto não-virtual (por exemplo, uma pessoa), e assim por diante., O REST utiliza um identificador de recursos para identificar o recurso específico envolvido numa interacção entre componentes.

o estado do recurso em qualquer momento específico é conhecido como representação de recursos. Uma representação consiste em dados, metadados descrevendo os dados e hipermedia links que podem ajudar os clientes em transição para o próximo estado desejado.

O formato de dados de uma representação é conhecido como um tipo de mídia. O tipo de mídia identifica uma especificação que define como uma representação deve ser processada. Uma API verdadeiramente repousante parece hipertexto., Cada unidade endereçável de informação carrega um endereço, seja explicitamente (por exemplo, atributos de link e id) ou implicitamente (por exemplo, derivado da definição de tipo de mídia e estrutura de representação).

de acordo com Roy Fielding:

hipertexto (ou hypermedia) significa a apresentação simultânea de informações e controles de tal forma que a informação se torna o dinheiro através do qual o usuário (ou autômato) obtém escolhas e seleciona ações. Lembre-se que hipertexto não precisa ser HTML (ou XML ou JSON) em um navegador., As máquinas podem seguir links quando entendem o formato de dados e tipos de relacionamento.

além disso, as representações de recursos devem ser auto-descritivas: o cliente não precisa de saber se um recurso é empregado ou dispositivo. Deve agir com base no tipo de mídia associado ao recurso. Então, na prática, você vai acabar criando muitos tipos de mídia personalizados-normalmente um tipo de mídia associado a um recurso.

cada tipo de mídia define um modelo de processamento padrão., Por exemplo, HTML define um processo de renderização para hipertexto e o comportamento do navegador em torno de cada elemento. Ele não tem nenhuma relação com os métodos de recursos GET/PUT/POST/DELETE/… além do fato de que alguns elementos de tipo de mídia irão definir um modelo de processo que vai como “elementos âncora com um atributo href criar uma ligação hipertexto que, quando selecionado, invoca um pedido de recuperação (GET) no URI correspondente ao atributo href codificado em CDATA.,”

Resource Methods

outra coisa importante associada ao REST é os métodos de recurso a serem usados para realizar a transição desejada. Um grande número de pessoas relaciona erradamente os métodos de recursos com os métodos HTTP GET/PUT/POST/DELETE.Roy Fielding nunca mencionou qualquer recomendação sobre o método a utilizar em que condição. Tudo o que ele enfatiza é que deve ser uma interface uniforme. Se você decidir HTTP POST será usado para atualizar um recurso – em vez de a maioria das pessoas recomendar HTTP PUT-está tudo bem e a interface de aplicação será repousante.,

idealmente, tudo o que é necessário para mudar o estado do recurso deve fazer parte da resposta da API para esse recurso – incluindo métodos e em que estado eles deixarão a representação.

uma API de repouso deve ser introduzida sem conhecimento prévio além do URI inicial (favorito) e conjunto de tipos de mídia padronizados que são adequados para o público pretendido (i.e., esperado para ser compreendido por qualquer cliente que possa usar a API)., A partir desse ponto, todas as transições de Estado de aplicação devem ser conduzidas pela seleção do cliente de opções fornecidas pelo servidor que estão presentes nas representações recebidas ou implícitas pela manipulação do Usuário dessas representações. As transições podem ser determinadas (ou limitadas) pelo conhecimento do cliente sobre tipos de mídia e mecanismos de comunicação de recursos, ambos os quais podem ser melhorados em tempo real (por exemplo, código on-demand).,

Outra coisa que irá ajudá-lo, enquanto a construção de APIs RESTful é que a consulta com base API resultados devem ser representado por uma lista de links com informações de resumo, não por matrizes de recurso original representações porque a consulta não é um substituto para a identificação de recursos.

descanso e HTTP não são os mesmos !!

muitas pessoas preferem comparar HTTP com descanso. Descanso e HTTP não são os mesmos.

REST !,= = HTTP

No entanto, porque o REST também pretende tornar a web (internet) mais streamline e standard, ele defende o uso de princípios de repouso mais estritamente. E é daí que as pessoas tentam começar a comparar o descanso com a web (HTTP). Roy fielding, em sua dissertação, em nenhum lugar mencionou qualquer diretiva de implementação-incluindo qualquer preferência de protocolo e HTTP. Até o momento, você está honrando os 6 princípios orientadores do descanso, você pode chamar sua interface repousante.,

em palavras mais simples, no resto estilo arquitetônico, dados e funcionalidade são considerados recursos e são acessados usando identificadores de recursos uniformes (URIs). Os recursos são agidos usando um conjunto de operações simples e bem definidas. Os clientes e servidores trocam representações de recursos usando uma interface padronizada e protocolo-tipicamente HTTP.

recursos são dissociados de sua representação para que seu conteúdo possa ser acessado em uma variedade de formatos, tais como HTML, XML, texto simples, PDF, JPEG, JSON, e outros., Os metadados sobre o recurso estão disponíveis e são utilizados, por exemplo, para controlar o caching, detectar erros de transmissão, negociar o formato de representação apropriado e realizar o controle de autenticação ou acesso. E mais importante, Toda interação com um recurso é sem estado.todos estes princípios ajudam as aplicações RESTful a serem simples, leves e rápidas.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *