Você está na página 1de 21

Disciplina: Servios Web

Ricardo Sobjak

Responder as seguintes perguntas:


O que REST?

O que um RESTful WebService?


Como um pequeno RESTful Web Service pode ser

desenvolvido em Java?

Web 2.0 socializao


Quanto mais voc interagir, melhor!

Dividir a responsabilidade de gerar contedo com os usurios


3

Caso de uso em um portal Business-to-Consumer (B2C):


Empresa que trabalha com venda de passagens areas. Novas parcerias com outras empresas vo surgindo. No poderamos oferecer servios de locao de carros aos

compradores de passagens areas em nosso prprio site? O sistema flexvel o bastante?

Novas parcerias podem surgir.


Soluo: Web Service!
4

Caractersticas de Web Services:


um sistema que utiliza o protocolo HTTP, do mesmo

jeito que uma aplicao web, com requests e responses;


tipicamente utiliza XML ou outros formatos de arquivos,

como JSON, para transferncia de dados;


geralmente utilizado para integrar sistemas diferentes,

ou disponibilizar uma srie de servios de uma aplicao, como o Twitter ou Flicker.


5

Denio
REpresentational State Transfer (REST) um

estilo de arquitetura de software para hipermdia distribuda, tal como a World Wide Web.

Seu criador (Roy Fielding) defende que:

O protocolo HTTP rico o bastante para proporcionar Web services, e no h necessidade de criar-se nenhuma abstrao para este fim. Para ter um Web Service efetivo necessrio apenas de:

um cliente, um servio, informao, um meio para encapsular esta informao (XML, JSON, YAML, etc); e um meio para acessar esta informao (HTTP).
8

Na prtica, funciona como um conjunto de princpios que servem para denir um sistema, tais como:

arquitetura cliente/servidor; no armazenar estado; cache uma interface nica e bem denida, tais como os mtodos do HTTP (GET, POST, PUT, DELETE); Identificao nica de cada recurso Mltiplas representaes de um mesmo recurso
9

HTTP perfeito para aplicarmos os princpios REST:


Identificao atravs de URIs Interface uniforme: Verbos HTTP: GET, POST, PUT, DELETE... Cdigos informativos: 404, 201, 500 e outras dezenas...

Simples e praticamente acessvel de qualquer linguagem de programao HTTP maduro e consolidado Simples:

No cabealho da requisio informaes como formatos de

Autenticao, encriptao, autorizao: Use o que o HTTP oferece


10

dados, codificao, linguagem, entre outras No corpo da requisio a representao do recurso

um Web Service que utiliza HTTP e segue os princpios REST. Em geral, possui 3 caractersticas principais:

Substantivos (recursos):
uma URI (identificador nico de um recurso) base para o Web

Service.

Verbos (operaes)
um conjunto de operaes suportados, utilizando os mtodos HTTP.

Representao (Content Type):


um formato de dados suportado pelo web service, em geral XML ou

JSON.

11

A parte mais importante de um web service RESTful se refere suas URIs. Em geral, temos uma URI base para identicar um recurso, e teremos operaes que variam conforme o mtodo HTTP utilizado. Essas operaes seriam equivalentes s mesmas operaes de CRUD.
12

Operaes sobre uma coleo:


http://exemplo.com/livros/ GET POST PUT DELETE

obtm a coleo adiciona um item coleo substitue a coleo remove a coleo


13

Operaes sobre um item:


http://exemplo.com/livros/45 GET POST PUT DELETE

obtm o item atualiza o item remove o item


14

Usar Servlets? Usar frameworks de terceiros no padronizados? Nada disso!! JAX-RS Foco em POJOs e anotaes JSR 311 e JSR 339 Aplicaes JAX-RS podem rodar em um simples servlet continer Programar em Java prazeroso de novo! Voc no faz parse de XML nem JSON, nem de nenhum outro formato famoso Voc s anota e programa sua lgica de negcio O livro da vez RESTful Java with JAX-RS.

15

no Java EE, existe uma especicao chamada JAX-RS (JSR-311) que padroniza anotaes para criar um Web Service seguindo os princpios REST, aqui ser utilizado o Jersey que a implementao de referncia desenvolvida pela prpria Sun.
16

Para ter o bsico:


jersey-server.jar jersey-servlet.jar jersey-core.jar jsr311-api.jar asm.jar

Para criar um WebServer (opcional):


grizzly-servlet-webserver.jar

Para ter suporte a JSON:


jersey-json.jar
17

O Jersey baseado em diversas anotaes. As principais so as seguintes:


@Path indica qual a URI correspondente. @GET/@POST/@PUT/@DELETE indicam a qual verbo HTTP o mtodo deve ser @Produces indica o MIME-type da Response. @Consumes indica o MIME-type do contedo da Request.
18

executado.

@XmlRootElement public class Endereco { private int id; private String cidade; private String uf; private String cep; // getters and setters }
19

1) O que um RESTful? 2) O que so os recursos? E como so acessados? 3) Quais so os verbos do RESTful? 4) Existe alguma especificao de REST para a linguagem Java? 5) Cite um framework que utilize a especificao JAX-RS. 6) Qual a anotao do JAX-RS usada para indicar um recurso?
20

DAL MORO, Tharcis; DORNELES, Carina F.; REBONATTO, Marcelo Trindade. Web services WS-* versus Web Services REST. REIC - Revista de Iniciao Cientca, v. 11, n. 1, p. 36-51, 2011.

RICHARDSON, Leonard; RUBY, Sam. RESTful Servios Web. Rio de Janeiro: Alta Books, 2007. 336 p.
SILVA, Edilson Hipolito da; FERREIRA, Edson Mundin. Web Service REST em Java com JAX-RS, In: Congresso Cientfico da Regio Centro-Ocidental do Paran, IV., 2011, Campo Mouro. Anais do CONCCEPAR 2011: Campo Mouro, 2011.
21