REST. Caio Nakashima caio.nakashima@mds.gov.br caionakashima@gmail.com



Documentos relacionados
REST Um Estilo de Arquitetura de Sistemas Distribuídos

UFG - Instituto de Informática

Servidor Proxy armazenamento em cache.

Integração de sistemas utilizando Web Services do tipo REST

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

18/04/2006 Micropagamento F2b Web Services Web rev 00

Entendendo como funciona o NAT

Web Services. Autor: Rômulo Rosa Furtado

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Arquitetura de Rede de Computadores

Serviços Web: Introdução

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

RestFull WebServices. Rafael Nunes Arquiteto de Software / Instrutor Globalcode. Globalcode Open4Education

Sistemas Distribuídos

PARANÁ GOVERNO DO ESTADO

Arquiteturas SOA, WOA, e REST

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Web Design Aula 11: Site na Web

Comunicando através da rede

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Curso de Aprendizado Industrial Desenvolvedor WEB

Introdução ao Modelos de Duas Camadas Cliente Servidor

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

3 SCS: Sistema de Componentes de Software

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Redes de Computadores II INF-3A

UNIVERSIDADE. Sistemas Distribuídos

CAPÍTULO 2. Este capítulo tratará :

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

MVC e Camadas - Fragmental Bliki

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

INTRODUÇÃO: 1 - Conectando na sua conta

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

INTEGRAÇÃO DE APLICAÇÕES UTILIZANDO WEB SERVICE 1. Kellen Kristine Perazzoli 2 ; Manassés Ribeiro 3

Desenvolvendo Websites com PHP

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Sistemas Operacionais

Os desafios do Bradesco nas redes sociais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

OURO MODERNO Web Designer APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

Manual do Painel Administrativo

Rede de Computadores

Serviços Web: Arquitetura

Redes de Computadores

Manual de implantação

Vitória (ES), 13 de março de À T.O.D.O.S. OPERADORES S/A.

Orientação à Objetos. Aécio Costa

Tutorial para envio de comunicados e SMS

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Arquitetura de Rede de Computadores

Documento de Análise e Projeto VideoSystem

LINGUAGEM DE BANCO DE DADOS

REDES DE COMPUTADORES

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Criando e consumindo Web service REST com PHP e JSON. Palestrante: Weiberlan Garcia

AULA 03 MODELO OSI/ISO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

HTML5. Prof. Salustiano Rodrigues de Oliveira

O que são DNS, SMTP e SNM

As principais alterações entre as versões 1.0 e 2.0 da NFS-e foram: Não obrigatória. Para informar o responsável pela retenção.

A Figura... mostra a arquitetura técnica de serviços na Web

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

INT-9: Implementing ESB Processes with OpenEdge and Sonic David Cleary

Manual de criação de envios no BTG360

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Programação Web Prof. Wladimir

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Como funciona a plataforma Superlógica? - Livro 4 de 4. Como funciona a interface de integração? Como você poderá complementar o sistema?

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

O papel do CRM no sucesso comercial

AULA 1 Iniciando o uso do TerraView

2 Diagrama de Caso de Uso

Prof. Raul Sidnei Wazlawick UFSC-CTC-INE. Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010.

Um Driver NDIS Para Interceptação de Datagramas IP

1.1 Porque um nível de aplicação proxy?

Avanços na transparência

FTP Protocolo de Transferência de Arquivos

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Configurando um servidor DHCP

Manual do PolicyKit-kde. Daniel Nicoletti Tradução: Luiz Fernando Ranghetti

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Capítulo 9. Gerenciamento de rede

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: ou

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Transcrição:

REST Caio Nakashima caio.nakashima@mds.gov.br caionakashima@gmail.com 1

RESTful REpresentation State Transfer Estilo de arquitetura de software para sistemas distribuídos Termo proposto por Roy Fielding em sua tese de doutorado http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Web services com a arquitetura da internet Exploração extensa dos recursos do HTTP

Definição REST é um conjunto de princípios que definem como Web Standards como HTTP e URIs devem ser usados (o que freqüentemente difere um pouco do que muitas pessoas atualmente fazem). A promessa é que se você aderir a princípios REST enquanto estiver desenhando sua aplicação, você terá um sistema que explora a arquitetura da Web em seu benefício.

Princípios fundamentais Dê a todas as coisas um Identificador Vincule as coisas Utilize métodos padronizados Recursos com múltiplas representações Comunique sem estado

Dê a todas as "coisas" um ID Tudo o que deveria ser identificado deveria obviamente ter um ID Na Web, há um conceito unificado para IDs: A URI. URIs compõe um namespace global,e utilizando URIs para identificar seus recursos chave significa ter um ID único e global. http://example.com/customers/1234 http://example.com/orders/2007/10/776654 http://example.com/products/4554 http://example.com/processes/salary-increase-234

Vincule as coisas <order self="http://example.com/customers/1234"> <amount>23</amount> <product ref="http://example.com/products/4554"> </product> <customer ref="http://example.com/customers/1234"> </customer> </order> Os links podem apontar para recursos que são oferecidos por uma aplicação diferente, um outro servidor, ou até mesmo em uma empresa diferente em outro continente - porque o esquema de nomes é um padrão global, todos os recursos que compõe a Web podem ser ligados uns aos outros.

O fato de que o servidor (ou provedor de serviços, se você preferir) oferece um conjunto de links para o cliente (o consumidor do serviço), permite ao cliente mudar o aplicativo de um estado para outro, através de um link. Use liks para referênciar coisas que possam ser identificadas (recursos) sempre que for possível. Hiperlinks são o que fazem a Web ser a Web.

Utilize os métodos padrão O HTTP chama verbos, e além dos dois que todo mundo conhece (o GET e o POST), o conjunto de métodos padrão inclui PUT, DELETE, HEAD e OPTIONS. O significado de cada um desses métodos é definido na especificação do HTTP, juntamente com algumas garantias sobre o seus comportamentos. Um desenvolvedor OO pode imaginar que todo recurso em um cenário HTTP RESTful estende uma classe como essa (em alguma pseudo-sintaxe no estilo Java/C# concentrando-se nos métodos principais):

Exemplo class Resource { Resource(URI u); Response get(); Response post(request r); Response put(request r); Response delete(); } Como a semântica do GET é definida na especificação, você pode ter certeza que tem obrigações quando chamá-lo - é por isso que o método é chamado de "seguro". O GET suporta caching de forma muito eficiente e sofisticada, em muitos casos, você nem sequer precisa enviar uma requisição ao servidor.

Se você expuser as funcionalidades do seu aplicativo (ou funcionalidades do serviço, ser você preferir) do modo RESTful, esse princípio e suas restrições se aplicam a você também. Isso é difícil de aceitar se você estiver acostumado com uma abordagem de design diferente - afinal, você esta provavelmente convencido de que seu aplicativo tem muito mais lógica do que é expressado com operações manuais.

A interface uniforme também permite que qualquer componente que entenda o protocolo de aplicação HTTP interaja com seu aplicativo. Exemplos de componentes que são beneficiados por isso são clientes genéricos como o curl, o wget, proxies, caches, servidores HTTP, gateways e até mesmo o Google, o Yahoo!, o MSN e muitos outros. Para que clientes possam interagir com seus recursos, eles devem implementar o protocolo de aplicação padrão (HTTP) corretamente, isto é, utilizar os métodos padrão: GET, PUT, POST e DELETE.

Recursos com múltiplas representações Como é que um cliente saberá como lidar com os dados que obtém, por exemplo, como resultado de uma requisição GET ou POST? A abordagem do HTTP permite uma separação entre as responsabilidades de manipulação de dados e invocação de operações. Em outras palavras, um cliente que sabe como lidar com um formato específico de dados pode interagir com todos os recursos que possam oferecer uma representação nesse formato. Utilizando a negociação de conteúdo HTTP, um cliente pode solicitar por uma representação em um formato específico:

GET /customers/1234 HTTP/1.1 Host: example.com Accept: application/vnd.mycompany.customer+xml O resultado pode ser um XML em algum formato específico de um empresa que representa os dados de um cliente. GET /customers/1234 HTTP/1.1 Host: example.com Accept: text/x-vcard O resultado poderia ser o endereço de um cliente no formato vcard.

Comunique sem Estado E importante salientar que embora REST inclua a ídeia de "não manter", isso não significa que o aplicativo que exponha suas funcionalidades não possa ter estado - de fato, isso tornaria a abordagem inútil na maioria dos cenários. REST exige que o estado seja transformado no estado do recurso ou mantido no cliente. Em outras palavras, um servidor não deveria guardar o estado da comunicação de qualquer um dos clientes que se comunique com ele além de uma única requisição. A razão mais óbvia para isso é escalabilidade - o número de clientes que podem interagir com o servidor seria consideravelmente impactado se fosse preciso manter o estado do cliente.

Origem 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 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.

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 Pontos negativos 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

REST / TCP/IP / WS 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 de padrões / boas práticas.

Arquitetura A arquitetura dos web services WS-* se baseia em um protocolo bem definido, com regras precisas quanto ao formato dos dados trafegados e seguindo padrões acordados em consórcios de grandes corporações. Contrastando com isso, arquitetura dos web services REST é radicalmente diferente.

Diferenças WS-*: Já temos o protocolo e os padrões, devemos definir os serviços que vamos oferecer e os documentos que desejamos trocar entre as partes. REST: Vamos identificar os recursos envolvidos e utilizar extensamente os recursos do HTTP para definir um bom protocolo de interação com estes recursos.

Estilo Declarativo x Imperativo REST: Clientes interagem com os Recursos através de requisições HTTP GET, PUT, POST e DELETE WS-*: Clientes invocam diferentes operações, com conjuntos variados de parâmetros de entrada e saída

A URI deve indicar o que se está manipulando e o método (ou verbo) HTTP indicará como você está manipulando. A URI /usuario/123456 nos indica que estamos manipulando um usuário específico. Sabendo que estamos usando o método HTTP GET, temos a clara indicação de que estamos buscando os dados deste usuário. Este estilo de invocação de serviços pode ser considerado Declarativo.

Nos web services WS-*, a informação da operação que está sendo realizada fica encapsulada no corpo da requisição. Mesmo quando a camada de transporte das mensagens SOAP é HTTP, a URI não esclarece de forma alguma a operação envolvida. A informação dos serviços disponíveis fica descrita por elementos operation de um documento WSDL, geralmente em um formato fazeressaoperacao. Esta maneira de desenvolver web services é classificada como Imperativa.