1 REST Caio Nakashima

Slides:



Advertisements
Apresentações semelhantes
Terminologia Definicao Construção Exemplos
Advertisements

Sistemas Distribuídos Baseados na Web
Redes de computadores I
Bruno Rafael de Oliveira Rodrigues
Sistemas Distribuídos Web Services
DISCIPLINA: Introdução à Computação
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
MODELO DE REFERÊNCIA OSI
Interação Cliente Servidor
SOA e Web Services Aluno: Thiago Caproni Tavares
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Comunicação Entre Objetos Distribuídos
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
Análise e Projeto de Sistemas
WWW – word wide web A WWW (World Wide Web ou, simplesmente, Web) é a parte multimídia da Internet, portanto possiblita a exibição de páginas de hipertexto,
Prof. Marco Aurelio N. Esteves
Internet Principais conceitos.
Sistemas Distribuídos
SOA - Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a serviços
Tópicos de Sistemas de Informação A
Desenvolvimento de Projetos e Aplicações Web
Aplicativos Web Com Orientação a Objetos
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
A autoria - II.
Análise e Projeto de Sistemas
RESTful Webservices Lucas Batistussi –
Professor: Márcio Amador
Programação Orientada à Objetos
UNEMAT-FACIEX MODELOS DE REFERÊNCIA Dr. José Raúl Vento 2005.
Aplicações Web com Orientação a Objetos
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
RESTFul com Slim Framework
Processos.
RMI - JAVA.
Aula 1 - Fundamentos Web Servidor
IIS Web Server.
RPC and Web Service André Pereira.
Prof.°: João Henrique Disciplina: SOR II
Dados abertos interligados
Requisitos de Software
Integração de Ferramentas CASE
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
Proprietary and Confidential Bruno Pereira Web Services REST.
Google Data API Sandro Rama Fiorini. Introdução Missão Google: “organizar a informação do mundo inteiro e fazê-la universalmente acessível e útil”. Universalmente.
SyncML Apresentação –Introdução Motivação Iniciativa SyncML –XML (eXtensible Markup Language) –Protocolos SyncML –Sincronização em duas vias –Conclusões.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Pesquisa sobre o uso de Web Service Alunos:Felipe Silveira Israel Andreis Programação Distribuída e Paralela Prof. Dr. Cláudio F. R. Geyer.
Programação para Internet
Linguagem de Programação Web Karine Alessandra Córdova.
Módulo II Capítulo 1: Orientação a Objetos
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Aula 5 – Formulários GET – POST - REQUEST
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
Tecgraf PUC-Rio maio de 2011 Introdução ao Openbus.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Webservices.
Interações entre objetos
SOA SOA – Arquitetura Orientada a Serviços Conceitos e Aplicações
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Apresentação TI Alunos: Isadora Bernardo, Lucas Medeiros, Marcela Muniz e Renata Coutinho.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Servidor WEB IGOR ALVES. O protocolo HTTP 1990 surgimento da aplicação www Grande quantidade de informação que pode ser acessada por demanda Buscadores.
Transcrição da apresentação:

1 REST Caio Nakashima

RESTful REpresentation State Transfer Estilo de arquitetura de software para sistemas distribuídos Termo proposto por Roy Fielding em sua tese de doutorado 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

Vincule as coisas 23 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/ 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.