O que é WebService?
WebServices São serviços/métodos que as aplicações disponibilizam para serem consumidos/executados por outras aplicações. Envolvem um produtor e um consumidor e são disponibilizados via Internet. São aplicações que, geralmente, rodam em cima do protocolo HTTP. WebServices são sistemas distribuídas e seus componentes podem ser executados em dispositivos diversos tais como: desktops, smartphones e tablets.
Por que utilizar WebServices? O que há de bom neles?
Os WebServices são implantados usando um padrão de indústria e protocolos independentes como HTTP e XML/JSON Eles podem prover a interoperabilidade entre os serviços e reduzir o custo de entrada, já que podem aproveitar outras infraestruturas já em vigor, como a segurança, redes, formatação de dados, etc.
Os provedores de serviços e seus clientes podem interoperar mesmo que escritos em diferentes linguagens de programação. As linguagens de programação mais conhecidas e utilizadas pela Indústria de software dão suporte à WebServices, a citar: PHP, Python, Java, etc... Isso é maravilhoso! Com isso, podemos desenvolver sistemas e disponibilizar funcionalidades destes para serem reaproveitados por outras aplicações sem impor a elas a utilização da mesma plataforma em que o serviço foi desenvolvido, pois o próprio sistema JAX-RS é quem se responsabiliza pela integração. Ele é reaproveitável!
Além de tudo, os WebServices tem design modular, onde novos serviços podem ser gerados através da integração e sobreposição de serviços existentes.
Existem WebServices com estilo REST e WebServices baseados em SOAP (caso especial do estilo REST).
Como vamos focar em RESTFUL, então serão abordados conceitos de RESTFUL.
O REST surgiu em uma tese de PHD de Roy Fielding (Cofundador da Apache Software Fundation e um dos principais autores da especificação HTTP). Enquanto SOAP é um protocolo de mensagens, RESTful é um estilo de arquitetura de software para sistemas distribuídos com hipermídia (texto, gráficos, áudio, etc. que são armazenados em uma rede e interligados por hiperlinks).
Um recurso possui hiperlinks e estes utilizam URIs (Uniform Resource Identifier), que são identificadores únicos para recursos na Internet, para fazer a ligação. Um cliente RESTful emite uma solicitação que envolve um recurso, se a solicitação for bem-sucedida, uma representação do recurso (podendo ser o texto/html) é transferida do servidor que hospeda o recurso para o cliente que fez a solicitação.
Os WebServices RESTful exigem não só recursos, mas precisam de operações que representem o pedido dos clientes. No RESTful, são conhecidos como verbos os métodos do protocolo HTTP: POST (cria um novo recurso); GET (lê um recurso); PUT(atualiza um recurso); DELETE (deleta um recurso); HEAD (recupera o header da URI passada); OPTIONS (recupera os métodos que são possíveis); TRACE (recupera informações de debug).
O URI representa o recurso e assim deve ser colocado no substantivo (como já é conhecido o recurso em REST). Por exemplo, em uma rede de lojas se quisermos ter acesso a dados de uma determinada loja (GET), a URI seria: “/lojas/id”, ou para listar todas as lojas(recursos) criadas: “/lojas”. Com o POST poderíamos utilizar a mesma URI “/lojas”, sendo que utilizando com o POST a intenção é criar um novo recurso loja. Utilizando a URI “/lojas/id” com o verbo DELETE a operação seria de remover determinada loja.
Você pode definir nas classes quais verbos são convenientes à utilização, por exemplo, se é requisito que nenhuma loja seja excluída, então não se implementa o método DELETE.
Entendido um pouco de REST, vamos ao ponto de partida: HelloWorld
Java dá suporte a REST através da JSR 339 (Java Specification Resquest), esta especificação é chamada de JAX-RS 2.0. Jersey é a implementação da especificação para JAX-RS. Basicamente, Jersey tem um servidor e um cliente REST. O “core-client” pode ser usado fornecendo uma biblioteca para se comunicar com o servidor. No lado do servidor, o Jersey usa um servlet que “escaneia” as classes predefinidas para identificar os recursos REST. ATENÇÃO: através do arquivo de configuração “web.xml” é que se registra o servlet, que não precisa ser criado, ele já é fornecido pela Jersey distribution (encontra-se nas bibliotecas).
Iniciando o projeto, crie um novo projeto no eclipse -> Dynamic Web Project, dar nome ao projeto e escolher o servidor (Apache Tomcat), como na Figura 1:
Figura 1: Criando novo projeto web e definindo algumas opções
Antes de criar, a classe Resource é importante baixar e adicionar nas libs do projeto (WebContent/WEB-INF/lib) os jars do Jersey. Os jars necessários são: asm-3.1.jar, Jersey-core-1.4.jar, Jersey-server-1.4.jar, jsr311-api-1.1.1.jar. Estes estão presentes em um arquivo .zip disponível para download no site do Jersey (link direto: http://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-archive&v=1.17&e=zip. Os jars aparecem circulados na Figura 2:
Figura 2: JARs adicionados na pasta lib
Criando a classe RESOURCE:
Listagem 1: RECURSO que irá ser utilizado
package luana.article.validator.devmedia.resource;
import javax.WebServices.rs.GET; //import da biblioteca jersey
import javax.WebServices.rs.Path; //import da biblioteca jersey
import javax.WebServices.rs.Produces; //import da biblioteca jersey
@Path("/helloworld") // o @path define a URI do recurso que nesse caso será /helloworld
public class RecursoHelloWorld {
@GET // utilizando apenas o verbo GET, ou seja, vou apenas ler o recurso
@Produces("text/plain") // define qual tipo MIME é retornado para o cliente
public String exibir(){
return "Hello World";
}
}
Feito o Resource, basta agora mapear o servlet e o recurso no web.xml:
Agora, é só colocar para a aplicação rodar no servidor. E pronto coloque a seguinte URL (com as modificações necessárias porta, nome escolhido para o projeto e para o recurso): http://localhost:5550/TesteWebServices/helloworld se tudo correr bem irá aparecer um Hello World na tela.
Com isto finalizo o artigo, por hoje é só... Espero que tenham gostado.
Um abraço.
DAS CONSIDERAÇÕES FINAIS
Vê-se que o RESTful não é um bicho de sete cabeças e é muito simples ser implementado. Para aplicações mais complexas é necessário cautela para escolher os serviços de cada recurso. A base foi dada! Mãos a obra com os próximos WebServices!
Links Úteis
Saiba mais sobre Java ;)
- Curso básico de Java Aplicado:
O objetivo do curso de Java Básico aplicado é apresentar os conceitos básicos da linguagem de programação Java, assim como da Orientação a Objetos, aplicados em exemplos simples e úteis, utilizados pela maioria dos desenvolvedores no dia a dia do desenvolvimento de software. - Básico de Java e Orientação a Objetos:
O objetivo deste curso básico de Java e Orientação a Objetos é apresentar os conceitos básicos da linguagem de programação Java e a orientação a objetos (OO), visando ensinar usuários leigos, com pouca experiência em linguagem de programação a trabalhar com a plataforma Java. - Curso de Java: Técnicas Avançadas para Java SE:
Neste curso de Java avançado iremos nos aprofundar em tópicos de programação que ajudam você a entender os conceitos mais avançados de Java. Isso significa que o programador já precisa ter conhecimentos prévios da linguagem Java, bem como dos seus recursos, lógica de programação, depuração de código, IDEs, dentre outros conceitos básicos de programação.
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.