Como usar REST?

15 respostas
Pilantra

Olá pessoal,

Preciso implementar o REST no GWT mas não sei como. Pesquisei sobre algumas coisas e achei uns frameworks. Tem como fazer isso sem usar framework? E como fazer? Alguém me passa um exemplo?

Grato. :wink:

15 Respostas

P

Pilantra, na java magazine 56 tem um artigo muito bacana que ensina a trabalhar com REST.

abraços.

L

Não tenho conhecimento profundo sobre GWT. Mas como sei que é um framework que converte código Java para código Javascript, provavelmente o GWT sabe apenas consumir serviços REST.

Agora, pra produzir serviço REST, você pode simplesmente usar Servlet, só que é um saco! Recomendo você dar uma olhada no framework Jersey.

Pilantra

Mas não tem como fazer isso sem um framework? Porque o GWT é meio chatinho, ele pode não aceitar.

Só uma coisa, o REST roda no server ou no client?

Pilantra

Up!

Rafael_Nunes

Não sei se é viável para você, porém na quinta feira haverá um mini-curso gratuito a respeito de REST na Globalcode:

http://www.globalcode.com.br/index.jsp?pagina=Boletim200836

E respondendo a sua pergunta, REST é um Web Service, logo você precisa de uma implementação tanto no lado do servidor quanto no lado do cliente. Se você já tiver o serviço implementado no servidor, para consumir você consegue até com javascript puro sem precisar do GWT

Pilantra

Hum entendi!! Caramba, se eu morasse em São Paulo, com certeza que iria. Não tem nenhum artigo sobre isso na net? Preciso de algo rápido pra implementar isso o quanto antes :frowning:

Rafael_Nunes

Você já tem o serviço em REST implementado?
Ou tem de impleemntar o serviço e o cliente?

Sugiro:
http://www.jboss.org/resteasy/

Pilantra

Na verdade eu tenho que implementar só o cliente. Mas conhecimento nunca é d+ né? hehee, dae eu já quero aprender a fazer no servidor também!!! Bom, eu vou dar uma olhada nesses frameworks!

Valeu!!

rodrigoK

Tenho usado o Restlet (www.restlet.org), dê uma olhada depois.

Abraços,

C

rodrigoK:
Tenho usado o Restlet (www.restlet.org), dê uma olhada depois.

Abraços,

Restlet com GWT

C

Apenas repassando entao…

http://wiki.restlet.org/docs_1.1/13-restlet/28-restlet/144-restlet.html

paulopatto

Fala Pilantra, essa sua pergunta uma verdadeira pilantragem.

Cara tem sim como fazer sem framework, to em aula aqui no labd afacul, mas é o seguinte o REST um WEB SERVICE com base em XML Flat.

Ou seja é muito simples de fazer, você irá necessitar de um servlet para o servidor e se no cliente não quiser usar java pode usar somente javascript com funções AJAX e se quiser melhorar ainda mais pode usar JSON.

Cara não sei se vou ter temopo mas eu escrevo um exemplo que eu tenho aqui em um livro de AJAX.

Abraços e descupe a brincadeira.

Mauricio_Linhares

REST não tem “base em XML Flat” (e eu nem sei o que esse XML Flat é), ele pode entregar recursos em qualquer formato, sob qualquer protocolo.

A melhor referência sobre REST que eu conheço é essa aqui -> http://oreilly.com/catalog/9780596529260/

C

Mauricio Linhares:
REST não tem “base em XML Flat” (e eu nem sei o que esse XML Flat é), ele pode entregar recursos em qualquer formato, sob qualquer protocolo.

A melhor referência sobre REST que eu conheço é essa aqui -> http://oreilly.com/catalog/9780596529260/

ISso mesmo. Inclusive o exemplo que postei integra com xml e json.

khichfy

Pessoal,
to apanhando aqui do Rest…

eu tenho que implementar um serviço que dado um CPF deve-se retornar uma lista de clientes…

pois bem, comecei a tentar instalar o jersey. Uso o Maven e o Jetty …
daí coloquei as dependencias no pom.xml da seguinte maneira:
Core Server

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.0</version>
</dependency>

Core Client

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.0</version>
</dependency>

Core Spring

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-spring</artifactId>
    <version>1.0</version>
</dependency>

beleza… o maven instalou esses jars pra mim…

meu 2° passo foi criar uma classe bem simples:

package com.sun.ws.rest.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";
    }
}

A grande verdade sobre minha duvida é no web.xml
to usando o jetty e coloquei um servelet da sequinte maneira:

<servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.foo.rest;org.bar.rest</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
		<servlet-name>Jersey Web Application</servlet-name>
		<url-pattern>/service/*</url-pattern>
	</servlet-mapping>

inicio a app e coloco no browser:
http://localhost:8080/hb/service/helloworld

mas o que eu recebo é um erro :

HTTP ERROR: 500

The ResourceConfig instance does not contain any root resource classes.

RequestURI=/hb/service/helloworld
Caused by:

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
	at com.sun.jersey.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:774)
	at com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:671)
	at com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:487)
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:622)
	at com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:538)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:197)
	at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433)
	at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:342)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

Alguem pode me ajudar : :shock:
obrigado!!!

Criado 3 de outubro de 2008
Ultima resposta 20 de out. de 2008
Respostas 15
Participantes 9