Você está na página 1de 7

MATERA Systems > Tecnologia > Como funciona um

WebService REST

CATEGORIAS
Selecionar categoria

ARQUIVO
Selecionar o ms

COMO FUNCIONA UM
WEBSERVICE REST
Por: Marcos Paliari Postado em: 22 de outubro de
2012 Tecnologia
A web amplamente utilizada e reconhecida
principalmente por sua arquitetura robusta, escalvel e
tolerante a falhas. Quem sustenta esses fatores e lhe
d todo este poder o protocolo HTTP (o
protocoloHTTP utilizado, em regra, quando se deseja
evitar que a informao transmitida entre o cliente e o
servidor seja visualizada por terceiros, como, por
exemplo, no caso de compras online.). Atualmente,
muitas vezes necessitamos integrar aplicaes em
ambientes totalmente diferentes e os WebServices so
uma das maneiras mais comuns e fceis de integrar os
diferentes sistemas. Este post mostrar um pouco de
um modelo de WebService chamado REST.
Representational State Transfer ou somente REST,
cada vez mais usado como alternativa ao j antigo

SOAP onde que a principal crtica a este a burocracia,


algo que REST possui em uma escala muito menor.
REST baseado no design do protocolo HTTP, que j
possui diversos mecanismos embutidos para
representar recursos como cdigo de status,
representao de tipos de contedo, cabealhos, etc.
O principal nesta arquitetura so as URLs do sistema e
os resources (resource um recurso, entidade). Ele
aproveita os mtodos HTTP para se comunicar, que
so:
GET: Solicita a representao de um
determinado recurso. definido como um
mtodo seguro e no deve ser usado para
disparar uma ao (remover um usurio, por
exemplo);
POST: As informaes enviadas no corpo
(body) da requisio so utilizadas para criar
um novo recurso. Tambm responsvel por
fazer processamentos que no so
diretamente relacionados a um recurso.
DELETE: Remove um recurso. Deve retornar o
status 204 caso no exista nenhum recurso
para a URI especificada.
PUT: Atualiza um recurso na URI
especificada. Caso o recurso no exista, ele
pode criar um. A principal diferena entre
POST e PUT que o primeiro pode lidar no
somente com recursos, mas tambm pode
fazer processamento de informaes.
Porm no existe um padro obrigatrio, pode ser
implementado somente o que necessrio em seu
contexto.

TPICOS
RECENTES
Os desafios
para manter
um software
ERP atualizado
Conheendo o
Mercado de
Opes da
BOVESPA
Ativao do
trace de uma
sesso Oracle
e utilizao do
tkprof
O novo Boleto
de Pagamento
Um Script
Criador de
Mquinas

O exemplo a seguir utiliza a especificao JSR-311


JAX-RS que faz parte do Java EE 6, para buscar os
dados de um cliente:

LADO SERVIDOR
[php]
public class Cliente {
private String nome;
private String endereco;
private int idade; Buscar
private char sexo;

SUPORTE

// Getters e Setters
}
[/php]

SOLUES

SERVIOS

EMPRESA

CARREIRA

Esta uma
classeCONTATO
Cliente que guarda o nome,
BLOG
endereo, idade e sexo dos clientes.
[php]
@Path(/cliente/{nome})
public class ClienteResource{
@GET
@Produces({MediaType.APPLICATION_JSON})
public Cliente getClienteByNome(@PathParam(nome)
String nome) {
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = clienteDAO.getClienteByNome(nome);
return cliente;
}

}
[/php]
A anotao @Path(/cliente/{nome}) nos fornece uma
URL para acesso ao recurso onde o prprio JAX-RS
reconhece {nome} como um parmetro que enviado
atravs da URL.
Este exemplo implementa somente o servio GET,
como pode ser notado pela anotao @GET no mtodo
getClienteByNome que recebe como parmetro na URL
o nome do cliente pela anotao @PathParam(nome).
A anotao
@Produces({MediaType.APPLICATION_JSON}) mostra
que esta solicitao GET ir produzir uma resposta no
formato JSON.
Supondo que o servio esteja disponvel no endereo
http://www.matera.com/exemplo/cliente/ , para
conseguirmos os dados da cliente Maria devemos
acessar
http://www.matera.com/exemplo/cliente/Mariaatravs
do browser e receberamos algo parecido com isto :

[php]
{"nome":"Maria","endereco":"Rua
Exemplo","idade":"20","sexo":"F"}
[/php]

LADO CLIENTE
[php]
public class ClienteRestClient{
public static void main (String[] args) throws Exception {
HttpClient httpClient = new HttpClient();
GetMethod httpMethod = new
GetMethod(http://www.matera.com/exemplo/cliente/Maria);
httpMethod.addRequestHeader(Accept,
application/json);
httpClient.executeMethod(httpMethod);
Scanner scan = new
Scanner(httpMethod.getResponseBodyAsStream());

while(scan.hasNext()){
System.out.println(scan.nextLine());
}
httpMethod.releaseConnection();
}
}
[/php]
Este um cliente bem simples, em que o retorno no
nada mais do que o que o browser j nos apresentava,
mas nada impede de se criar um parser JSON para
desserializar este objeto, entre outras aes que
tambm ainda podem ser implementadas.
Lembrando que este foi um rpido exemplo com o
intuito de mostrar a importncia e a facilidade de
utilizar REST, foi utilizado JAX-RS, mas existem vrios
frameworks que podem ser utilizados como o Spring e
o VRaptor.

Leia Mais:

HTTP://EN.WIKIPEDIA.ORG/WIKI/JAVA_API_FOR_RESTFUL_WEB_SERVICES
HTTP://WWW.ORACLE.COM/TECHNETWORK/ARTICLES/JAVASE/INDEX137171.HTML
HTTP://JCP.ORG/EN/JSR/DETAIL?ID=311
HTTP://PT.WIKIPEDIA.ORG/WIKI/REST
HTTP://WWW.ICS.UCI.EDU/~FIELDING/PUBS/DISSERTATION/REST_ARCH_STYLE.H
HTTP://EN.WIKIPEDIA.ORG/WIKI/REPRESENTATIONAL_STATE_TRANSFER
HTTP://WWW.W3SCHOOLS.COM/JSON/DEFAULT.ASP
HTTP://WWW.SPRINGSOURCE.ORG/
HTTP://BLOG.SPRINGSOURCE.ORG/2009/03/08/RESTIN-SPRING-3-MVC/

O Blog mantido por profissionais da MATERA, e


portanto, as opinies no necessariamente refletem a
opinio da empresa.

Autor:
MARCOS PALIARI

Mais posts deste autor

2 Comments
Por: Guilherme Augusto Zimmermann Postado
em: 23 de julho de 2013
Bem simples e direto, legal para quem nunca viu.
Parabns
Responder
Por: Joo Postado em: 29 de setembro de 2014
Simples e direto, muito bom!
Obrigado por compartilhar.
Responder

Deixe um comentrio

O seu endereo de email no ser publicado Campos


obrigatrios so marcados *

Name

Email

Website

Enviar

Copyright 2015, MATERA Systems | Todos os direitos reservados

Você também pode gostar