Você está na página 1de 58

RESTful Web Services

Allisson Azevedo II Encontro Comunicao Digital http://allisson.eti.br

Web Services

Web Services
Comunicao entre sistemas HTTP como meio de transporte Protocolo estvel Simples Escalvel Trfego permitido

Web Services

Independncia Sistema operacional Linguagem de programao Hardware

Web Services

Padres Abertos XML XML-RPC SOAP

Web Services - XML


Representao eficiente para sistemas Fcil manipulao em linguagens de programao Padro para troca de informaes

Exemplo - RSS

Exemplo - RSS

Web Services - XML-RPC


Criado por Dave Winer (1995) Transportado via protocolo HTTP Focado na simplicidade

XML-RPC request

XML-RPC response

Web Services - SOAP


Padro para Web Services (W3C) Transporte em vrios protocolos Descrio dos servios disponveis (WSDL) Em desenvolvimento (1.2 W3C)

SOAP request

SOAP response

Web Services - SOAP

Crtica Complexidade dos formatos SOAP e WSDL

REST

REpresentational State Transfer

REST no
Novo envelope xml semelhante ao SOAP Toolkit/Framework Padro Sem especificao na W3C

REST
Princpios para desenvolvimento de uma arquitetura Utiliza padres j existentes Tese de Roy Fielding (2000)

REST
Stateless Orientado a Recurso (ResourceOriented) Interface uniforme para acesso aos recursos Representaes independentes (baseadas no Content-Type)

REST - Stateless
Toda requisio HTTP completamente isolada de outras Uma requisio precisa incluir todas as informaes necessrias para uma resposta do servidor

REST - Recursos

Tudo que importante ao ponto de ser exposto pelo sistema na web

REST - Recursos

Possveis recursos: Bookmarks no Delicious Atualizaes no Twitter Scraps do Orkut Fotos no Flickr

REST - Recursos
URI (Identificador Universal de Recursos) Todo recurso possui no mnimo uma URI

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

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

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

REST Interface Uniforme

Utiliza os mtodos do protocolo HTTP para manipulao de recursos (Verbos) GET POST PUT DELETE

REST Interface Uniforme

GET Utilizado para obter uma representao do recurso

REST Interface Uniforme

POST Utilizado para criar um novo recurso

REST Interface Uniforme

PUT Utilizado para modificar um recurso existente

REST Interface Uniforme

DELETE Utilizado para apagar um recurso existente

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

No RESTful Verbo POST GET POST POST/GET Verbo POST GET PUT DELETE HREF /bookmarks/create /bookmarks/show/1 /bookmarks/update/1 /bookmarks/delete/1 RESTful URI /bookmarks /bookmarks/1 /bookmarks/1 /bookmarks/1 Ao Criar (Create) Visualizar (Read) Atualizar (Update) Apagar (Delete) Ao Criar (Create) Visualizar (Read) Atualizar (Update) Apagar (Delete)

REST Representaes
No se limita ao XML A representao livre HTML/XHTML XML JSON PDF PNG

REST - Classificao

RESTful (High REST) Implementao em confirmidade com a tese de Roy Fielding Utilizao dos quatro verbos (POST, GET, PUT, DELETE)

REST - Classificao

REST-RPC (Low REST) Utilizao do mtodo GET para toda API

REST no mundo real

MySpace

MySpace
RESTful http://developer.myspace.com/com munity/RestfulAPIs/resources.aspx

del.icio.us

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

Flickr

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

Twitter

Twitter
REST-RPC http://groups.google.com/group/twi tter-development-talk/web/apidocumentation

Amazon Simple Storage Service

Amazon Simple Storage Service


RESTful Exclusivo via web services http://docs.amazonwebservices.co m/AmazonS3/2006-03-01/gsg/

Dvidas?

Obrigado!