RESTful Web Services
-
Upload
allisson-azevedo -
Category
Technology
-
view
3.763 -
download
2
description
Transcript of RESTful Web Services
RESTful Web Services
Allisson AzevedoII Encontro Comunicação Digital
http://allisson.eti.br
Web Services
Web Services➔ Comunicação entre sistemas➔ HTTP como meio de transporte
➔Protocolo estável➔Simples➔Escalável➔Tráfego permitido
Web Services➔ Independência
➔Sistema operacional➔Linguagem de programação➔Hardware
Web Services➔ Padrões Abertos
➔XML➔XML-RPC➔SOAP
Web Services - XML➔ Representação eficiente para
sistemas➔ Fácil manipulação em linguagens
de programação➔ Padrão para troca de informações
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➔ Padrão para Web Services (W3C)➔ Transporte em vários protocolos➔ Descrição dos serviços disponíveis
(WSDL)➔ Em desenvolvimento (1.2 W3C)
SOAP request
SOAP response
Web Services - SOAP➔ Crítica
➔Complexidade dos formatos SOAP e WSDL
REST
REpresentational State Transfer
REST não é➔ Novo envelope xml semelhante ao
SOAP➔ Toolkit/Framework➔ Padrão
➔Sem especificação na W3C
REST é➔ Princípios para desenvolvimento
de uma arquitetura➔Utiliza padrões já existentes
➔ Tese de Roy Fielding (2000)
REST➔ Stateless➔ Orientado a Recurso (Resource-
Oriented)➔ Interface uniforme para acesso aos
recursos➔ Representações independentes
(baseadas no Content-Type)
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
REST - Recursos➔ Tudo que é importante ao ponto de
ser exposto pelo sistema na web
REST - Recursos➔ Possíveis recursos:
➔Bookmarks no Delicious➔Atualizações no Twitter➔Scraps do Orkut➔Fotos no Flickr
REST - Recursos➔ URI (Identificador Universal de
Recursos)➔ Todo recurso possui no mínimo
uma URI
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/milestones
REST – Interface Uniforme➔ Utiliza os métodos do protocolo
HTTP para manipulação de recursos (Verbos)➔GET➔POST➔PUT➔DELETE
REST – Interface Uniforme➔ GET
➔Utilizado para obter uma representação 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
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)
REST – Representações➔ Não se limita ao XML➔ A representação é livre
➔HTML/XHTML➔XML➔JSON➔PDF➔PNG
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)
REST - Classificação➔ REST-RPC (Low REST)
➔Utilização do método GET para toda API
REST no mundo real
MySpace
MySpace➔ RESTful➔ http://developer.myspace.com/com
munity/RestfulAPIs/resources.aspx
del.icio.us
MySpace
del.icio.us➔ REST-RPC➔ http://del.icio.us/help/api/
Flickr
Flickr➔ REST-RPC➔ http://www.flickr.com/services/api/
Twitter➔ REST-RPC➔ http://groups.google.com/group/twi
tter-development-talk/web/api-documentation
Amazon Simple Storage Service
Amazon Simple Storage Service
➔ RESTful➔ Exclusivo via web services➔ http://docs.amazonwebservices.co
m/AmazonS3/2006-03-01/gsg/
Dúvidas?
Obrigado!