Вы находитесь на странице: 1из 29

Universidade Federal de So Carlos

Centro de Cincias Exatas e de Tecnologia


Programa de Ps-Graduao em Cincia da Computao

REPRESENTATIONAL STATE TRANSFER


(REST )
Alexandre Bellini
Antonio Francisco do Prado
Luciana Aparecida Martinez Zaina
PPGCC/DC - UFSCar

Grupo de Engenharia
de Software

23/11/2010

AGENDA
SOAP
Representational State Transfer (Rest)
Conceito

Caracteristicas
Elementos Arquiteturais

Restful Web Service


Conceito
REST via JAX-RS (Anotaes)

Exemplos
2

23/11/2010

SOAP
REST
Restful
Exemplos

SOAP

23/11/2010

SOAP

23/10/09

ANALOGIA COM RESTAURANTE!


Voc busca nas pginas amarelas (UDDI)
um restaurante para comer;
Chegando l, recebe um cardpio (WSDL)
com as opes de comida;
Faz o pedido ao garom (SOAP) que
andando, leva cozinha (HTTP);
L na cozinha, voc no sabe o que tem
dentro (e no importa), o Cozinheiro prepara
a comida (Sistema);
Depois de pronto, recebe uma resposta
(SOAP).
23/10/09

PADRES PARA DESENVOLVER SOAP


PILHA WS-*

Dezenas de padres;
BigWebServices;
Segurana: WS-Security, WS-Policy,
XML-Signature, XML-Encryption;
Notificao de eventos: WS-Notification,
WS-Eventing;
Endereamento: WS-Addressing;
Tolerncia a falhas: WS-Reliability;
Transaes: WS-Transaction.
23/10/09

BIGWEBSERVICES?

WS-* >> ASAP (Asynchronous Service Access Protocol), BPEL4WS

(Business Process Execution Language), ebSOA TC (Electronic Business Service


Oriented Architecture), ebXML (Electronic Business XML), International Health
Continuum TC, oBIX TC , SAML (Security Assertion Markup Language), SOAP
(Simple Object Access Protocol), SOAP MTOM (SOAP Message Transmission
Optimization Mechanism), ranslation WS TC , UBL (Universal Business Language),
UDDI (Universal Description, Discovery, and Integration), WS-Addressing, WSAtomicTransaction, WSBPEL (Business Process Execution Language), WS-CAF (WS
Composite Application Framework ), WS-CF (WS Coordination Framework), WSChoreography , WS-CDL (Web Services Choreography Description Language), WSCoordination, WS-CTX, WS Context, WS-Discovery (Web Services Dynamic
Discovery), WSDL (WS Description Language), WSDM (WS Distributed
Management), WS-Enumeration, WS-Eventing, WS-Federation (Web Services
Federation Language), WSIL (WS Inspection Language), WS-Manageability, WSMetadataExchange (Web Services Metadata Exchange), WS-MessageDelivery, WSNotification, WS-Policy, WS-Provisioning, WS-Reliability, WS Reliable Messaging,
WS-RF (WS-Resource Framework), WS-Reliablemessaging , WSRP (WS Remote
Portals), WS-Security, WS-SecureConversation, WS-SecurityPolicy, WS Security
Services TC, WS-TM (WS Transaction Management), WS-Transfer, WS-Trust, XMLEncryption, XML-Signature
23/10/09

SOAP
REST
Restful
Exemplos

REST

23/11/2010

REST

2000: criada por Roy Fielding, um dos criadores da


especificao HTTP;

REST (Transferncia de Estado Representacional) um estilo de


arquitetura que especifica restries, como a interface uniforme,
que quando aplicado a um Servio Web pode induzir propriedades
desejveis, tais como desempenho e escalabilidade que permitem
Servios Web de melhor qualidade

23/11/2010

REST - CARACTERISTICAS
Separao de responsabilidades entre as
camadas cliente e servidor;
Comunicaes independentes (stateless);
Utilizao de uma interface uniforme entre os
componentes.
Uso de cache (para eliminar algumas
interaes desnecessrias entre cliente e
servidor);
10

23/11/2010

REST
Cada url deve representar um recurso (ROA);
Geralmente, via mtodo GET, cada recurso
deve ser diferencivel;
Usa os verbos HTTP;
NO TEM WSDL e nem UDDI!
Retorno livre:
XML;
JSON;
Etc.
23/10/09

11

ELEMENTOS ARQUITETURAIS DE REST

12

23/11/2010

REST
Fielding especificou em sua tese, que deu
origem arquitetura, as trs classes de
elementos arquiteturais:

Elementos de Dados;
Conectores; e
Componentes
23/10/09

13

ELEMENTOS DE DADOS
So os elementos que contm a informao a ser usada e
transformada.
Elemento

Definio / Funo

Recursos

Identificadores
de Recurso

Representaes
de Recursos

23/10/09

Exemplo

Conceito-chave da arquitetura REST.


Um recurso qualquer informao que
possa receber um nome.
Na prtica, tudo que possa ser armazenado
em uma base de dados.

Um filme.
Harry Potter

Identifica um recurso especfico envolvido


em uma interao entre clientes e
servidores.
REST usa o URI (Unified Resource
Identifier) como identificador de recursos.

Uma URI contendo o cdigo


especfico e nico de um filme.
http://localhost:8080/
REST/filme/1

As representaes de um recurso so usadas


para capturar o estado atual e o estado
desejado de um recurso solicitado.
Na prtica, so seqncias de bytes
acrescidas de meta-dados que descrevem
estes bytes.

Uma pgina da Web contendo o


estado atual solicitado do
recurso
(ano, ttulo, gnero).
Ano: 1997
Ttulo: Harry Potter e a Pedra
Filosofal
Gnero: Fantasia/Suspense
14

COMPONENTES
So os elementos que usam ou transformam a informao.
Em REST, os componentes so caracterizados de acordo com
o papel que exercem. So eles:
Servidor de Origem: trata as requisies de um cliente;
Proxy e Gateway: utilizados para permitir o
encaminhamento das requisies e respostas; e
Agente do Usurio: inicia a requisio e, logo em seguida,
se torna o destino final de uma resposta.

23/10/09

15

CONECTORES
De acordo com Fielding:
A utilizao de conectores prov uma interface
abstrata para a comunicao entre os
componentes, melhorando a simplicidade do
sistema atravs da separao de
responsabilidades e ocultando a
implementao de recursos e os mecanismos
de comunicao

23/10/09

16

CONECTORES
Cliente e Servidor: responsveis pelo acesso aos recursos;
Libwww e Apache API.
Cache: armazena as respostas passveis de cache;
Cache de um Web Browser.
Resolver: responsvel pela converso de um URI em um endereo de
rede;

Bind (DNS lookup library).


Tnel: cria um caminho virtual para o trfego dos recursos.
SOCKS ou um SSL (Secure Sockets Layer) aps um HTTP
CONNECT.

23/10/09

17

CONECTORES
Servidor de Origem: trata as requisies de um cliente;
Servidor Web Apache.
Proxy e Gateway: utilizados para permitir o encaminhamento das
requisies e respostas; e
Netscape Proxy e o Apache API.
Agente do Usurio: inicia a requisio e, logo em seguida, se torna o
destino final de uma resposta.
Web Browser

23/10/09

18

INTERFACE UNIFORME E OS MTODOS


NATIVOS HTTP

Verbos HTTP

20

SOAP
REST
Restful
Exemplos

RESTFUL WEBSERVICES

23/11/2010

RESTFUL
O Restful Web Service baseado nos mtodos HTTP e no conceito
de REST;
Define a URI de base para os servios, o MIME-types seus
suportados (XML, Texto, JSON) e o conjunto de operaes (POST,
GET, PUT, DELETE) que so suportadas;
Java define o suporte padro REST via JAX-RS (A API Java para
servios Web RESTful) na JSR 311;

JAX-RS apia a criao de XML e JSON;


Jersey a implementao de referncia para esta especificao;

23/10/09

21

RESTFUL
API JAX-RS usa anotaes da linguagem de programao Java para
simplificar o desenvolvimento de Restful Web Service;
Anotao

Descrio

@Path

um caminho da URI relativa no qual indica que a classe Java ser


hospedado.

@GET

um mtodo de solicitao de designao e corresponde ao mtodo


HTTP e realiza o processamento das solicitaes HTTP GET.

@POST

um mtodo de solicitao de designao e corresponde ao mtodo


HTTP e realiza o processamento dos pedidos HTTP POST.

@PUT

um mtodo de solicitao de designao e corresponde ao mtodo


HTTP e realiza o processamento das requisies HTTP PUT.

@DELETE

um mtodo de solicitao de designao e corresponde ao mtodo


HTTP e realiza o processamento das requisies HTTP DELETE.

@HEAD

um mtodo de solicitao de designao e corresponde ao mtodo


HTTP e realiza o processamento das requisies HTTP HEAD.

23/10/09

22

RESTFUL
Anotao

Descrio

@PathParam

um tipo de parmetro que voc pode extrair para uso em sua


classe de recurso. So extrados da URI de solicitao, e os nomes
dos parmetros correspondem ao caminho URI.

@QueryParam um tipo de parmetro que voc pode extrair para uso em sua
classe de recurso. Esses parmetros so extrados dos parmetros
de solicitao de consulta URI.
@Consumes

utilizada para especificar o tipo MIME-media de representaes


que podem consumir o recurso que foi enviado pelo cliente.

@Produces

usado para especificar o tipo MIME-media de representaes de


um recurso pode produzir e enviar de volta para o cliente: por
exemplo, "text / plain".

@Provider

usado para qualquer coisa que seja de interesse para o runtime


JAX-RS, como MessageBodyReader e MessageBodyWriter.

23/10/09

23

RESTFUL
package com.sun.jersey.samples.helloworld.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.Path;
// The Java class will be hosted at the URI path "/helloworld"
@Path("/helloworld")
public class HelloWorldResource {
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media
// type "text/plain"
@Produces("text/plain")
public String getClichedMessage() {
// Return some cliched textual content
return "Hello World";
}
}
23/10/09

24

RESTFUL
Anotao

Descrio

@XmlRootElement(namespace = Define o elemento raiz de uma rvore XML.


"namespace")
@XmlType(propOrder = {
"field2", "field1",.. })

Permite definir a ordem em que os campos so


escritos no arquivo XML.

@XmlElement(name =
"neuName")

Define o nome do elemento XML que sero


utilizados. Obs.: o nome usado preciso ser
diferente do nome do JavaBeans.

23/10/09

25

RESTFUL
package de.vogella.xml.jaxb.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "book")
// If you want you can define the order in which the fields are written Optional
@XmlType(propOrder = { "author", "name", "publisher", "isbn" })
public class Book {
private String name;
private String author;
private String publisher;
private String isbn;
// If you like the variable name, e.g. "name", you can easily change this
// name for your XML-Output:
@XmlElement(name = "bookName")
public String getName() {
return name;
}
.

}
23/10/09

26

27

SOAP
REST
Restful
Exemplos

EXEMPLOS

23/11/2010

RESTFUL
Jersey is the open source, production quality.
JAX-RS (JSR 311) Reference Implementation for building RESTful Web services

Link: http://jersey.java.net/

23/10/09

28

Grato!
Dvidas? Entre em contato:

Alexandre Bellini
alexandre_bellini@dc.ufscar.br
@alexandredc
Antonio F. Prado
prado@dc.ufscar.br
Luciana A. M. Zaina
lzaina@ufscar.br

www.ges.dc.ufscar.br
Grupo de Engenharia de
Software

29

23/11/2010

Вам также может понравиться