corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Introdução aos serviços Web RESTful

REST (REpresentational State Transfer) é um estilo de arquitetura para sistemas de hipermídia distribuídos, como a World Wide Web. O conceito dos recursos identificados por identificadores de recursos universais (URIs) é central para a arquitetura RESTful. Esses recursos podem ser manipulados usando uma interface padrão, tal como HTTP, e as informações são trocadas usando representações desses recursos. Neste tutorial, você primeiro aprende um pouco sobre REST e, em seguida, como o NetBeans IDE 6.1 suporta esse estilo de arquitetura.

Conteúdo

O conteúdo desta página se aplica ao IDE NetBeans 6.1

Para seguir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou recurso Versão necessária
NetBeans IDE Web e Java EE versão 6.1
Java Development Kit (JDK) versão 6 ou
versão 5
Servidor da aplicação ou Web compatível com Java EE Servidor Web Tomcat 6.0 e/ou servidor da aplicação GlassFish v2
Importante: Se você usa Tomcat com este tutorial, consulte
o NetBeans Wiki sobre Tomcat com REST

O Tomcat e o GlassFish podem ser instalados com a distribuição Web e Java EE do NetBeans IDE. Como alternativa, você pode visitar a página de download do GlassFish ou a página de download do Apache Tomcat.

Introdução

Os serviços Web RESTful são serviços construídos com o estilo de arquitetura RESTful. A construção de serviços Web com a abordagem RESTful está surgindo como uma alternativa popular ao uso de tecnologias baseadas em SOAP para implantação de serviços na Internet, por ser mais leve e possuir a capacidade de transmitir dados diretamente através de HTTP.

O IDE oferece suporte ao rápido desenvolvimento de serviços Web RESTful usando a JSR 311 - API de Java para serviços Web RESTful (JAX-RS) e Jersey, a implementação de referência para JAX-RS.

Para obter informações detalhadas, consulte:

Além de construir serviços Web RESTful, o IDE também oferece suporte ao teste e à construção de aplicações cliente que acessem serviços Web RESTful e à criação de código para chamar serviços Web (baseados tanto em RESTful quanto em SOAP).

Veja uma lista dos recursos RESTful fornecidos pelo IDE:

  1. Criação rápida de serviços Web RESTful a partir de padrões e classes de entidade JPA.
  2. Geração rápida de código para chamar serviços Web como o Google Maps, a pesquisa de notícias do Yahoo e o StrikeIron, arrastando e soltando componentes da paleta de componentes RESTful.
  3. Geração de stubs de cliente JavaScript de serviços Web RESTful para construir aplicações cliente RESTful.
  4. Geração de cliente de teste para testar serviços Web RESTful.
  5. Visualização lógica para navegação fácil de classes de implementação do serviço Web RESTful no seu projeto.

Neste tutorial, você aprenderá como o IDE o ajuda na geração, implementação e teste de serviços Web RESTful.

Gerando classes de entidade de um banco de dados

O objetivo deste exercício é criar um projeto e gerar classes de entidade a partir de um banco de dados.

  1. Escolha Arquivo > Novo projeto. Em Categorias, selecione Web. Em Projetos, selecione Aplicação Web e clique em Próximo.
  2. Em Nome do projeto, indique CustomerDB.
  3. Em servidor, selecione GlassFish. Clique nas opções restantes e clique em Terminar.
  4. Abra a aba Serviços. Em Bancos de dados, clique com o botão direito do mouse em Java DB e inicie-o.
  5. Clique com o botão direito do mouse no nó CustomerDB e escolha Novo > Classes de entidade de um banco de dados. Como alternativa, você pode selecioná-la na categoria Persistência no assistente para Novo arquivo (Ctrl-N).
  6. No painel Tabelas de banco de dados, selecione a fonte de dados jdbc/sample no campo suspenso Fonte de dados.

    Observação: No Tomcat, essa fonte de dados talvez não exista. Nesse caso, escolha Nova fonte de dados no campo suspenso Fonte de dados. A caixa de diálogo Criar fonte de dados se abre. Digite jdbc/sample no campo Nome JNDI. No campo suspenso Conexão de banco de dados, selecione jdbc:derby://hostname:1527/sample [app on APP]. Clique em OK. A caixa de diálogo fecha e você retorna ao painel Tabelas de banco de dados. Consulte também o tutorial Serviço RESTful no Tomcat para NetBeans IDE 6.0.

  7. Em Tabelas disponíveis, selecione CUSTOMER e, em seguida, clique em Adicionar. A tabela DISCOUNT_CODE, que possui um relacionamento com a tabela CUSTOMER, também é adicionada automaticamente à lista Tabelas selecionadas. Agora você deve ver o seguinte:

    Painel Tabelas de banco de dados do assistente para Novas classes de entidade a partir de banco de dados, mostrando as tabelas CUSTOMER e DISCOUNT_CODE selecionadas

    Clique em Próximo.

  8. Em Pacote, digite customerdb. Agora você deve ver o seguinte:
    Painel Classes de entidade do assistente para Novas classes de entidade a partir de banco de dados, mostrando o nome do pacote
  9. Clique em Criar unidade de persistência. A caixa de diálogo seguinte é exibida:
    Caixa de diálogo Criar unidade de persistência do assistente para Novas classes de entidade a partir de banco de dados

    Clique em criar e, em seguida, em Terminar.

  10. Observe a janela Projetos. Agora você deve ver o seguinte:
    Visualização Projetos mostrando novas classes de entidade

Gerando serviços Web RESTful a partir de classes de entidade

O objetivo deste exercício é gerar serviços Web RESTful a partir das classes de entidade que geramos na seção anterior.

  1. Clique com o botão direito do mouse no pacote que contém as classes de entidade e escolha Novo > Serviços Web RESTful a partir de classes de entidade.
  2. No assistente para Novos serviços Web RESTful a partir de classes de entidade, clique em Adicionar tudo. Depois que as classes de entidade aparecem no campo Classes de entidade selecionadas, clique em Próximo.
  3. No próximo painel, deixe os padrões inalterados, como mostrado abaixo:
    Classes geradas mostradas no novo assistente para Serviços Web RESTful a partir de classes de entidade

    Aqui você pode ver tudo que o IDE irá gerar para você. O IDE usa o padrão item de contêiner para gerar as classes do recurso. Por exemplo, para a classe de entidade Customer, o IDE gera um recurso de contêiner chamado CustomersResource e um recurso de item chamado CustomerResource. Além disso, para cada classe de recurso, o IDE gera uma classe de conversor usada para gerar a representação da instância de entidade correspondente, tal como CustomersConverter e CustomerConverter. Além disso, existe uma classe de conversor adiciona chamada conversor de referência, tal como CustomerRefConverter, para representar relacionamentos.

    Clique em Terminar.

  4. Observe a janela Projetos. Agora você deve mostrar o seguinte:
    Visualização Projetos mostrando as classes geradas do serviço Web RESTful
  5. O nó Serviços Web RESTful na janela Projetos exibe todos os serviços Web RESTful de seu projeto. O valor entre colchetes, tal como [/customers/], é o valor do modelo da URI. Você também pode navegar para o arquivo de código-fonte, clicando duas vezes nesse nó. Essa visualização também existe todos os métodos HTTP e métodos de localizador de sub-recurso. Novamente, você pode navegar para os métodos, clicando duas vezes nos nós.

Agora que nossas classes de entidade e serviços Web RESTful foram gerados, vamos testar a nossa aplicação. O IDE fornece um utilitário prático para testar serviços Web RESTful. Usaremos o mesmo na próxima seção.

Testando os serviços Web RESTful

O objetivo deste exercício é testar a nossa aplicação.

  1. Clique com o botão direito do mouse no nó do projeto e escolha Testar serviços Web RESTful. O servidor se inicia e a aplicação é implantada. Quando o deployment estiver concluído, o navegador exibe sua aplicação, com um link para cada um dos serviços Web:
    Página inicial do testador do serviço Web RESTful no navegador
  2. À esquerda está o conjunto de recursos raiz. Aqui eles se chamam customers e discountCodes.

  3. Primeiro selecione um recurso raiz, tal como customers. Clique na lista suspensa Métodos para selecionar GET(application/xml) ou GET(application/json). Clique em Testar. O resultado é exibido na seção Saída do teste:
    Saída do testador do serviço Web RESTful mostrando a lista de clientes do db
  4. Existem 4 abas na seção Saída do teste. A visualização Tabular é uma visualização plana que exibe todas as URIs no documento resultante, para o qual você pode navegar, clicando nos links. A visualização Bruto exibe os dados reais retornados. Dependendo do tipo de mime selecionado (application/xml ou application/json), os dados exibidos estarão no formato XML ou JSON, respectivamente. A aba Cabeçalhos exibe as informações do cabeçalho HTTP. Também existe uma aba chamada Monitor de HTTP, que exibe solicitações e respostas HTTP reais enviadas e recebidas.

  5. Saia do navegador e retorne ao IDE.

Adicionando um recurso Google Map

O objetivo deste exercício é adicionar a funcionalidade Google Map aos nossos serviços Web RESTful.

  1. Abra a classe CustomerResource no editor.
  2. Adicione os métodos seguintes a CustomerResource:
    @GET
    @ProduceMime("text/html")
    public String getGoogleMap() {
    // Drag and drop the getGoogleMap operation here
    
       return "";
    }
    
    //Gets invoked by going to browser and accessing any customer (ie  /customers/1/googleMap)
    /**
     * Returns sub-resource.
     */
    @Path("googleMap/")
    @GET
    @ProduceMime("text/html")
    public String getGoogleMapResource() {
        return getGoogleMap();
    }
  3. Inscreva-se para obter uma chave do Google Map em http://www.google.com/apis/maps/signup.html. A caixa de diálogo Solicitação de chave do Google Map possui um campo para a URL do seu site. Digite http://localhost:8080 nesse campo.
  4. No IDE, abra a aba Serviços e expanda o nó Serviços Web. Em Serviços Web, expanda Google. Em Google, expanda Serviço de mapa.

    Visualização Serviços mostrando o serviço google map
  5. Arraste o item getGoogleMap e solte-o no corpo do método getGoogleMap criado na Etapa 2, antes da linha return = null;. A caixa de diálogo Personalizar getGoogleMap SAAS se abre. Aceite os padrões e clique em OK.

    O IDE adiciona o seguinte bloco de teste ao método getGoogleMap na classe CustomerResource:

    @Path("googleMap/")
    @GET
    @ProduceMime("text/html")
    public String getGoogleMap() {
        try {
    
            String address = "16 Network Circle, Menlo Park";
            java.lang.Integer zoom = 15;
            String iframe = "false";
    
            RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
        //TODO - Uncomment the print Statement below to print result.
        //System.out.println("The SaasService returned: "+result.getDataAsString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

    O IDE também cria as classes e recursos seguintes no projeto:

    • RestConnection � Um wrapper em torno de HttpUrlConnection
    • RestResponse � Um wrapper da resposta HTTP
    • GoogleMapServiceAuthenticator � Uma classe que pega o valor da ApiKey de googlemapserviceauthenticator.properties
    • googlemapserviceauthenticator.properties � Um arquivo de propriedades que armazena a chave da API
    • GoogleMapService � Um wrapper de serviço contendo os métodos de wrapper que usa RestConnection para fazer chamadas ao serviço Google Map.

  6. Substitua o bloco de teste do método getGoogleMap pelo seguinte:
    @Path("googleMap/")
    @GET
    @ProduceMime("text/html")
    public String getGoogleMap() {
        try {
             Customer c = getEntity();
             String address = c.getAddressline1() + " " + c.getAddressline2() + " " +
                     c.getCity() + " " + c.getState() + " " + c.getZip();
             java.lang.Integer zoom = 15;
             String iframe = "false";
    
             RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
             return result.getDataAsString();
         //TODO - Uncomment the print Statement below to print result.
         //System.out.println("The SaasService returned: "+result.getDataAsString());
         } catch (Exception ex) {
             ex.printStackTrace();
         } 
         return "";
    }
  7. Abra googlemapserviceauthenticator.properties. Defina a propriedade api_key igual a chave da API que você obteve do Google na Etapa 3.
  8. Abra a aba Serviços e inicie o servidor de aplicações.
  9. Clique com o botão direito do mouse no nó do projeto CustomerDB e escolha Testar serviços Web RESTful. O IDE implanta e reimplanta seu projeto no servidor e abre uma janela do navegador com o cliente de teste.
  10. Clique em customers na barra lateral esquerda. Critérios de teste para customers aberto no painel principal. Deixe os padrões e clique em Testar. Uma tabela de clientes se abre.
  11. Selecione um cliente na tabela, tal como customer1. Clique no cliente. Critérios de teste desse cliente abertos no painel principal. No menu suspenso, selecione o tipo MIME text/html. Clique em Testar. GoogleMap desse endereço aberto na Visualização bruta.

    Observação: Se o GoogleMaps não encontrar um endereço, ele mostra uma visualização aproximada do oceano.


    Google Map mostrando o endereço do cliente no banco de dados

  12. Você pode substituir a URL por http://localhost:8081/CustomerDB/resources/customers/2/googleMap, .../3/googleMap, e assim por diante até 25, para ver a localização do mapa de todos os clientes.


Veja também

Para obter mais informações sobre o uso do NetBeans IDE 6.0 para desenvolver aplicações Java EE, consulte os seguintes recursos:

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems