RESTful Web Services

58
RESTful Web Services Allisson Azevedo II Encontro Comunicação Digital http://allisson.eti.br

description

Uma visão geral sobre RESTful Web Services

Transcript of RESTful Web Services

Page 1: RESTful Web Services

RESTful Web Services

Allisson AzevedoII Encontro Comunicação Digital

http://allisson.eti.br

Page 2: RESTful Web Services

Web Services

Page 3: RESTful Web Services

Web Services➔ Comunicação entre sistemas➔ HTTP como meio de transporte

➔Protocolo estável➔Simples➔Escalável➔Tráfego permitido

Page 4: RESTful Web Services

Web Services➔ Independência

➔Sistema operacional➔Linguagem de programação➔Hardware

Page 5: RESTful Web Services

Web Services➔ Padrões Abertos

➔XML➔XML-RPC➔SOAP

Page 6: RESTful Web Services

Web Services - XML➔ Representação eficiente para

sistemas➔ Fácil manipulação em linguagens

de programação➔ Padrão para troca de informações

Page 7: RESTful Web Services

Exemplo - RSS

Page 8: RESTful Web Services

Exemplo - RSS

Page 9: RESTful Web Services

Web Services - XML-RPC➔ Criado por Dave Winer (1995)➔ Transportado via protocolo HTTP➔ Focado na simplicidade

Page 10: RESTful Web Services

XML-RPC request

Page 11: RESTful Web Services

XML-RPC response

Page 12: RESTful Web Services

Web Services - SOAP➔ Padrão para Web Services (W3C)➔ Transporte em vários protocolos➔ Descrição dos serviços disponíveis

(WSDL)➔ Em desenvolvimento (1.2 W3C)

Page 13: RESTful Web Services

SOAP request

Page 14: RESTful Web Services

SOAP response

Page 15: RESTful Web Services

Web Services - SOAP➔ Crítica

➔Complexidade dos formatos SOAP e WSDL

Page 16: RESTful Web Services

REST

Page 17: RESTful Web Services

REpresentational State Transfer

Page 18: RESTful Web Services

REST não é➔ Novo envelope xml semelhante ao

SOAP➔ Toolkit/Framework➔ Padrão

➔Sem especificação na W3C

Page 19: RESTful Web Services

REST é➔ Princípios para desenvolvimento

de uma arquitetura➔Utiliza padrões já existentes

➔ Tese de Roy Fielding (2000)

Page 20: RESTful Web Services

REST➔ Stateless➔ Orientado a Recurso (Resource-

Oriented)➔ Interface uniforme para acesso aos

recursos➔ Representações independentes

(baseadas no Content-Type)

Page 21: RESTful Web Services

REST - Stateless➔ Toda requisição HTTP é

completamente isolada de outras➔ Uma requisição precisa incluir

todas as informações necessárias para uma resposta do servidor

Page 22: RESTful Web Services

REST - Recursos➔ Tudo que é importante ao ponto de

ser exposto pelo sistema na web

Page 23: RESTful Web Services

REST - Recursos➔ Possíveis recursos:

➔Bookmarks no Delicious➔Atualizações no Twitter➔Scraps do Orkut➔Fotos no Flickr

Page 24: RESTful Web Services

REST - Recursos➔ URI (Identificador Universal de

Recursos)➔ Todo recurso possui no mínimo

uma URI

Page 25: RESTful Web Services

http://rails.lighthouseapp.com/projects/8994-ruby-on-rails

Page 26: RESTful Web Services

http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets

Page 27: RESTful Web Services

http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/milestones

Page 28: RESTful Web Services

REST – Interface Uniforme➔ Utiliza os métodos do protocolo

HTTP para manipulação de recursos (Verbos)➔GET➔POST➔PUT➔DELETE

Page 29: RESTful Web Services

REST – Interface Uniforme➔ GET

➔Utilizado para obter uma representação do recurso

Page 30: RESTful Web Services

REST – Interface Uniforme➔ POST

➔Utilizado para criar um novo recurso

Page 31: RESTful Web Services

REST – Interface Uniforme➔ PUT

➔Utilizado para modificar um recurso existente

Page 32: RESTful Web Services

REST – Interface Uniforme➔ DELETE

➔Utilizado para apagar um recurso existente

Page 33: RESTful Web Services

REST – Interface Uniforme➔ Associar os verbos ao C.R.U.D em

banco de dados➔Create (INSERT) = POST➔Read (SELECT) = GET➔Update (UPDATE) = PUT➔Delete (DELETE) = DELETE

Page 34: RESTful Web Services

HREFPOST /bookmarks/createGET /bookmarks/show/1POST /bookmarks/update/1POST/GET /bookmarks/delete/1

URIPOST /bookmarksGET /bookmarks/1PUT /bookmarks/1DELETE /bookmarks/1

Não RESTfulVerbo Ação

Criar (Create)Visualizar (Read)Atualizar (Update)Apagar (Delete)

RESTfulVerbo Ação

Criar (Create)Visualizar (Read)Atualizar (Update)Apagar (Delete)

Page 35: RESTful Web Services

REST – Representações➔ Não se limita ao XML➔ A representação é livre

➔HTML/XHTML➔XML➔JSON➔PDF➔PNG

Page 36: RESTful Web Services
Page 37: RESTful Web Services
Page 38: RESTful Web Services
Page 39: RESTful Web Services

REST - Classificação➔ RESTful (High REST)

➔ Implementação em confirmidade com a tese de Roy Fielding

➔Utilização dos quatro verbos (POST, GET, PUT, DELETE)

Page 40: RESTful Web Services

REST - Classificação➔ REST-RPC (Low REST)

➔Utilização do método GET para toda API

Page 41: RESTful Web Services

REST no mundo real

Page 42: RESTful Web Services

MySpace

Page 43: RESTful Web Services

MySpace➔ RESTful➔ http://developer.myspace.com/com

munity/RestfulAPIs/resources.aspx

Page 44: RESTful Web Services
Page 45: RESTful Web Services

del.icio.us

MySpace

Page 46: RESTful Web Services

del.icio.us➔ REST-RPC➔ http://del.icio.us/help/api/

Page 47: RESTful Web Services
Page 48: RESTful Web Services

Flickr

Page 49: RESTful Web Services

Flickr➔ REST-RPC➔ http://www.flickr.com/services/api/

Page 50: RESTful Web Services
Page 51: RESTful Web Services

Twitter

Page 52: RESTful Web Services

Twitter➔ REST-RPC➔ http://groups.google.com/group/twi

tter-development-talk/web/api-documentation

Page 53: RESTful Web Services
Page 54: RESTful Web Services

Amazon Simple Storage Service

Page 55: RESTful Web Services

Amazon Simple Storage Service

➔ RESTful➔ Exclusivo via web services➔ http://docs.amazonwebservices.co

m/AmazonS3/2006-03-01/gsg/

Page 56: RESTful Web Services
Page 57: RESTful Web Services

Dúvidas?

Page 58: RESTful Web Services

Obrigado!