RESTful Webservices Lucas Batistussi –

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos Baseados na Web
Advertisements

Desenvolvimento Web GeneXus X
Eventos, Variáveis de Sessão e Aplicação
Curso Informática Básica
Engenharia de Software Alessandro Cruz Marcelo Brandão Theodoro Júnior
Desenvolvimento Baseado em CGI Material cedido pelo Prof
AJAX Rodrigo Vronscki Ricardo Roger de Córdova Farias
Universal Description, Discovery and Integration (UDDI)
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
Redes de Computadores 2 - Camada de Aplicação (HTTP) –
SOA e Web Services Aluno: Thiago Caproni Tavares
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
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,
Cookies e Sessões Mauro César Lopes. Mecanismos para guardar estados entre requisições HTTP HTTP é um protocolo sem estado Uma requisição é independente.
Prof. Marco Aurelio N. Esteves
PEAV – PROGRAMAÇÃO EM AMBIENTE VISUAL
Sistemas Distribuídos
TCP/IP CAMADA DE APLICAÇÃO SERVIÇOS
SOA - Arquitetura Orientada a Serviços
Tópicos de Sistemas de Informação A
Desenvolvimento de Projetos e Aplicações Web
Protocolo HTTP e HTML Prof. Danton Cavalcanti Franco Junior
Aplicativos Web Com Orientação a Objetos
Universal Description, Discovery and Integration (UDDI) Rafael Andrade
Amirton Chagas
Introdução ao Desenvolvimento Web
Minicurso PHP – Parte 2 João Paulo Ribeiro jpribeiro.com
Overview do ITS André John de Souza
Tecnologias de Internet
Arquitecturas de extensão do servidor HTTP CGI | ISAPI : ASP, ASP.NET Programação na Internet Secção de Programação ISEL-DEETC-LEIC Luis Falcão -
Arquitecturas de extensão do servidor HTTP Arquitecturas de extensão do servidor HTTP CGI e ISAPI: ASP, ASP.NET Programação na Internet Secção de Sistemas.
Tópicos de Sistemas de Informação A
Protocolo HTTP e Web Servers
Web Services Uninorte Semana de Tecnologia da Informação
Web Services Desmistificando o pré-conceito.
Curso de JavaWeb Módulo 1 e 2 Instrutores: Rodrigo Cardoso
Conceitos de J2EE para a WEB
HTTP Hypertext Transfer Protocol.
Tecnologias Web Prof. Msc. Juliano Gomes Weber Tecnologias Web Notas de Aula – Aula 02 1º Semestre UNIJUÍ.
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Aplicações Web com Orientação a Objetos
RESTFul com Slim Framework
1 REST Caio Nakashima
Aluna: Ingrid S. M. A. de Pádua RGA: Caches Web e GET Condicional.
Aula 1 - Fundamentos Web Servidor
IIS Web Server.
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Hypertext Transfer Protocol Equipe: Alan José de Moura Silva Filho (ajmsf) Cyrus Dias da Silva (cds) Dayse Danielle Soares da Rocha(ddsr) Elton Renan Magalhães.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Requisições e Respostas HTTP Prof. Leandro Luque.
INTERNET BÁSICA.
Infra-Estrutura de Comunicação (IF678)
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
.NET com C#.  Conceitos e Características  Vantagens do SOAP  Descrição do WebService  Gerenciamento de Estados  UDDI  Novidades do Framework 2.0.
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.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
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.
Serviços de rede e internet Jackson Eduardo da Silva.
Linguagem de Programação Web Karine Alessandra Córdova.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Aplicativos para Internet Prof. Wolley W. Silva
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Webservices.
1 AJAX em aplicações Rails Lívia Monnerat Castro
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
SETEMBRO, 2010 | SÃO PAULO. Israel Aece Desenvolvedor.NET Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT Site:
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.
Webservices Rest.
Transcrição da apresentação:

RESTful Webservices Lucas Batistussi – 8440792 Thiago Gottardi – 8428398

Roteiro Introdução Exemplos de REST Apresentação Prática Aula Prática Web Service SOAP HTTP REST Exemplos de REST Apresentação Prática Aula Prática

Web Service Uma aplicação servidora que permite interação de máquinas sobre a rede. Forma interoperável de transmitir dados. A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/#webservice

SOAP Padrão mais completo que REST para webservice; Tráfego mensagens sobre HTTP ou outro protocolo; Simple Object Access Protocol – Protocolo Simples de Acesso a Objetos; Representa recursos utilizando documento estruturado XML (wsdl).

Exemplo SOAP

SOAP Desvantagens do SOAP: Proposta REST: Envelopes geram muito tráfego; Pouco inteligível para humanos; Proposta REST: Utilizar outros métodos HTTP para diminuir: Trafego; Tamanho da URL.

HTTP Protocolo de Transmissão de Hipertexto 1.1 (RFC 2616) URI: http://servidor/caminho_do_recurso O cliente conecta-se ao servidor e solicita o recurso; Fonte: http://datatracker.ietf.org/doc/rfc2616/

HTTP Protocolo de Transmissão de Hipertexto 1.1 (RFC 2616) GET: Permite a um cliente (ex: browser) requisitar uma informação: Cliente GET /caminho/recurso/instancia HTTP/1.1 From: usuario@endereco User-Agent: Navegador Content-Type: text/html HTTP/1.1 200 OK Date: Wed, 4 Jun 2013 23:59:59 GMT Content-Type: text/html; charset=utf-8 Content-Length: 1354 Servidor Fonte: http://datatracker.ietf.org/doc/rfc2616/

HTTP Protocolo de Transmissão de Hipertexto 1.1 (RFC 2616) POST: Permite a um cliente (ex: browser) postar uma informação: Cliente POST /caminho/recurso/instancia HTTP/1.1 From: usuario@endereco User-Agent: Navegador Content-Type: application/x-www-form-urlencoded Content-Length: 30 nome=Thiago&numerousp=8428393 HTTP/1.1 200 OK Servidor Fonte: http://datatracker.ietf.org/doc/rfc2616/

HTTP Protocolo de Transmissão de Hipertexto 1.1 (RFC 2616) DELETE: Permite a um cliente remover instancia de recurso no servidor: Cliente DELETE /caminho/recurso/instancia HTTP/1.1 From: usuario@endereco User-Agent: Navegador HTTP/1.1 200 OK Servidor

HTTP Método DELETE Deletar um recurso Não é suportado pela maioria dos browsers en forms XMLHttpRequest (AJAX calls) OK Solução: utilizar o método POST e um parâmetro de formulário do tipo “hidden”, como “_method” com o valor correspondente ao método!

Solução <form action="/posts/xxxxx" method="POST"> <input type="hidden" name="_method" value="DELETE"> <input type="submit" value="delete"> </form>

HTTP Protocolo de Transmissão de Hipertexto 1.1 (RFC 2616) PUT: Permite a um cliente colocar instancia de recurso no servidor: Cliente PUT /caminho/recurso/ HTTP/1.1 From: usuario@endereco User-Agent: Navegador Content-Type: application/xml Content-Length: 89 <?xml version="1.0" encoding="ISO-8859-1"?> <recurso><instancia>Olá</instancia></recurso> HTTP/1.1 200 OK Servidor

HTTP Método PUT Inserir um recurso Não é suportado em alguns browsers em Forms XMLHttpRequest (AJAX calls) OK Solução: mesma que a do DELETE!

REST Métodos HTTP como PUT e DELETE são raramente usados por browsers e o internet explorer; Representational State Transfer (REST) Proposta REST: Fazer uso desses métodos; Estabelecer um padrão inteligível de um recurso: Introduzido na tese de Roy Fielding (Universidade da Califórnia) (2000) após fazer parte da equipe que definiu o HTTP 1.1; Conjunto de princípios para o design de Webservices. * Citar que os métodos HTTP estão associados com as operações CRUD dos sistemas de informação

REST Uso: GET Abstração de camadas “Padrão” Web 2.0; Recurso como substantivo (URI – Universal Resource Identifier) Ação como verbo (Métodos HTTP – POST, GET, PUT, DELETE, PATCH); Tipo de Conteúdo (Content-Type MIME). GET Cacheable GET não afeta conteúdo; Abstração de camadas Serviços podem ser divididos em N camadas; “Padrão” Web 2.0; Usado por websites como: Google, Facebook e Yahoo.

REST: Recursos Entidade do sistema Exposto pela URI Estrutura hierárquica URLs limpas e intuitivas, human-readable, easy to remember Simplifica o desenvolvimento Facilita a manutenção Deve haver cuidado para não expor estrutura de diretórios do sistema pelas URIs! Isso facilita a quebra de segurança e invasão do sistema! http://www.shopping.com/notebook/mbp http://www.shopping.com/?product=notebook&model=mbp 19

REST: Recursos Exemplo de URI conforme ministrada nesta aula: Endereço completo de um recurso http://servidor/aplicativo/recurso/ Após a barra na frente de recurso pode-se especificar vários parâmetros http://servidor/aplicativo/recurso/parametro/ http://servidor/aplicativo/recurso/parametro/parametro/ http://servidor/aplicativo/recurso/parametro/parametro/parametro Etc.

REST: Combinações Um servidor pode ter comportamento diferente para cada uma das combinações entre: Caminho; Nome do Recurso; Parâmetros; Método HTTP; Content-Type.

REST: Estado do Servidor No REST: GET é usado apenas para pegar informação sem afetar o conteúdo no servidor; POST insere dados a uma instância de um recurso; PUT insere uma instância de um recurso; DELETE remove uma instância de um recurso;

Onde está o “erro”? GET /adduser/name/Lucas HTTP/1.1 GET /users/name/Lucas HTTP/1.1

Resposta!!! A opção (1) está incoerente pois altera o estado do servidor adicionando um usuário ao sistema Na URI /users/name/Lucas o substantivo ou RECURSO é users Forma REST de adicionar usuário: PUT /users/name/Lucas HTTP/1.1

Princípios: statelessness Não guarda informação sobre o estado atual da navegação no servidor (sessão) Requisição contém todas as informações Natural do protocolo HTTP!

Statefull: exemplo GET /book1 HTTP/1.1 RESPONSE: {“content”:{…}} prevPage++; nextPage = prevPage; return nextPage; GET /book1 HTTP/1.1 RESPONSE: {“content”:{…}}

Stateless: exemplo getPage(1) GET /book1/page/1 HTTP/1.1 * A própria URL armazena o estado da navegação! RESPONSE: {“next”:2, “content”:{…}}

Stateless: vantagens Economia de recursos do servidor (principalmente memória) Redução consumo de banda (cache) Diminuição do tempo de resposta página (cache) * As respostas podem determinar se um item pode ser cacheado. Isso diminui o número de requisições ao servidor, aumentando a performance! * Redução do consumo de banda e diminuição do tempo de resposta: o cache permite recuperar cópias locais (cliente) de recursos, ou seja, os dados não precisam ser recuperados no servidor

Exemplo: recuperar tweets de um usuário REQUEST GET https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=twitterapi&count=2 RESPONSE: application/json; charset=utf-8 [{"created_at":"Wed May 22 20:48:37 +0000 2013","id":337309045331460097,"id_str":"337309045331460097","text":"API v1 blackout testing is just about complete. API…. }]

Alguns frameworks com suporte RESTFul Popular Ruby On Rails Exemplo site: twitter.com ASP.NET Exemplos sites: microsoft.com, peixeurbano.com.br vRaptor – brasileiro (USP)

SOAP x REST SOAP: Ocupa mais banda (troca mensagens) Mais complexo Machine-readable Maior flexibilidade Segurança Tecnologia consolidada no mercado * Flexívelidade: suporta diversos protocolos, estruturas hierárquicas

SOAP x REST REST: Mensagens menores (apenas requisição) Simples Machine+Human-readable Menos recursos que SOAP * Recursos limitados: somente protocolo HTTP, mensagens curtas (para evitar consumir banda), segurança difícil de garantir)

Referências http://www.ibm.com/developerworks/webservices/library /ws-restful/ http://www.w3.org/TR/soap12-part1/ http://datatracker.ietf.org/doc/rfc2616/ http://www.w3.org/TR/2004/NOTE-ws-gloss- 20040211/#webservice