RESTful Web Services

Post on 30-Jun-2015

3.763 views 2 download

description

Uma visão geral sobre RESTful Web Services

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

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!