SlideShare une entreprise Scribd logo
1  sur  15
Web Services RESTful
Passo a Passo para criação de um Web Service
RESTfull com Jersey / Eclipse / Tomcat
Testado também em JBoss e WebSphere
Juliano Marcos Martins
juliano.jmm@gmail.com
http://jmmwrite.wordpress.com
Jersey
● API Java que implementa JAX-RS
● Open source
● Utilitários
● https://jersey.java.net/index.html
● Especificação https://jax-rs-spec.java.net/
Passo 1
● Baixar a Jersey de https://jersey.java.net/download.html
OBS: Existem várias formas diferentes de se implementar, a utilizada aqui, é a que considero a mais simples.
Meu fim é didático, não me preocupo nesse momento em desenvolver um código a prova de falhas.
Passo 2
● Criar um projeto Dinâmico WEB no Eclipse
● Dei o nome de RestTeste
● Adicionei o projeto a um EAR chamado RestTeste
● Marquei a opção abaixo para gerar o web.xml (caso nao
tenha marcado, é possível gerar posteriormente)
Passo 3
● Adicionar as libs abaixo da Jersey ao WEB-INF/lib do
projeto
Passo 4
● Alterei o arquivo WEB.XML – adicionei a parte em laranja,
nela, estou mapeando os serviços que criarei.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>RestTeste</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Passo 5
● Criei uma classe chamada ClienteServico
Passo 6
● Implementei o Web Service. Veja que anotei com @Path
para “ouvir” em /clientes.
● O metodo irá “listar” clientes no formato JSON
package br.com.jmmwrite.servicos;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
@Path("/clientes")
public class ClientesServico {
@GET
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public String selectAll() {
String clientes = "{'nome': 'Cliente 1','endereco': 'Rua do Cliente 1','RG':3030030066},"
+ "{'nome': 'Cliente 2','endereco': 'Rua do Cliente 2','RG':1010010011}";
return clientes;
}
}
Passo 6.1
● No exemplo, estou simplesmente listando algo “hardcoded”.
● Normalmente, neste ponto iríamos efetuar uma invocação a
um DAO que iria trazer os dados do banco, e utilizariamos
alguma API, tal como GSON, para transformar a lista de
clientes num objeto Json bem formatado.
● Também teríamos preocupação com algum mecanismo de
segurança para não expor para o mundo um serviço dessa
forma.
Passo 7
● Clicamos no projeto criado e vamos em Run on Server
para testar:
Passo 8
● O projeto deve subir sem erros e ser acessível pela URL
http://127.0.0.1:8080/RestTeste/rest/clientes/
Próximos passos
● Como sugestão de estudo, é interessante construir um
CRUD.
● Uma dúvida comum é como receber parametros para
Inserir/Alterar/Excluir informações, uma forma simples é
com o código do proximo slide.
Passo 9
● O método abaixo recebe parâmetros, adicione o mesmo
ao seu Web Service:
@GET
@Path("/inserir")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public String insertCliente(@Context UriInfo uriInfo ) {
// queryParam
String nome = uriInfo.getQueryParameters().getFirst("nome");
String endereco = uriInfo.getQueryParameters().getFirst("endereco");
String rg = uriInfo.getQueryParameters().getFirst("rg");
String cliente = "{'nome': '" + nome + "','endereco': '" + endereco + "','rg':" + rg + "}";
return cliente;
}
Passo 9
● Invoque-o utilizando a URL
http://127.0.0.1:8080/RestTeste/rest/clientes/inserir?
nome=juliano&endereco=ruax&rg=5555555555599
Conclusão
● A ponta do Iceberg é essa. Com esta apresentação você
consegue construir um simples CRUD.
● Cada vez mais o mundo demanda Web Services,
principalemente com o número crescende de aplicações
móveis que acessam aplicativos WEB e Legadas.
● Tenha em mente que implementar um serviço é relativamente
fácil, qualquer pessoa implementa, porém, a preocupação
com segurança e escalabilidade (volumetria/carga), não são
comuns. Cuidado com os problemas que isso possa te gerar!
● Enjoy!

Contenu connexe

Tendances

Java Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassJava Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassCODE WHITE GmbH
 
Servlet and servlet life cycle
Servlet and servlet life cycleServlet and servlet life cycle
Servlet and servlet life cycleDhruvin Nakrani
 
A search engine in a world of events and microservices - SF Pot @Meetic
A search engine in a world of events and microservices - SF Pot @MeeticA search engine in a world of events and microservices - SF Pot @Meetic
A search engine in a world of events and microservices - SF Pot @MeeticmeeticTech
 
Resource Bundle
Resource BundleResource Bundle
Resource BundleSunil OS
 
Java Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and ExampleJava Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and Examplekamal kotecha
 
Dependency injection in CakePHP
Dependency injection in CakePHPDependency injection in CakePHP
Dependency injection in CakePHPmarkstory
 
Collections Framework
Collections FrameworkCollections Framework
Collections FrameworkSunil OS
 
JavaScript
JavaScriptJavaScript
JavaScriptSunil OS
 
Chapter 3: ado.net
Chapter 3: ado.netChapter 3: ado.net
Chapter 3: ado.netNgeam Soly
 
kotlinx.serialization
kotlinx.serializationkotlinx.serialization
kotlinx.serializationArawn Park
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 
Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Roman Elizarov
 
Java Basics
Java BasicsJava Basics
Java BasicsSunil OS
 

Tendances (20)

Java Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassJava Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug Class
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Servlet and servlet life cycle
Servlet and servlet life cycleServlet and servlet life cycle
Servlet and servlet life cycle
 
A search engine in a world of events and microservices - SF Pot @Meetic
A search engine in a world of events and microservices - SF Pot @MeeticA search engine in a world of events and microservices - SF Pot @Meetic
A search engine in a world of events and microservices - SF Pot @Meetic
 
OOP V3.1
OOP V3.1OOP V3.1
OOP V3.1
 
PHP Security
PHP SecurityPHP Security
PHP Security
 
Resource Bundle
Resource BundleResource Bundle
Resource Bundle
 
Java Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and ExampleJava Hibernate Programming with Architecture Diagram and Example
Java Hibernate Programming with Architecture Diagram and Example
 
Dependency injection in CakePHP
Dependency injection in CakePHPDependency injection in CakePHP
Dependency injection in CakePHP
 
Servlets
ServletsServlets
Servlets
 
Creating Apps with .NET MAUI
Creating Apps with .NET MAUICreating Apps with .NET MAUI
Creating Apps with .NET MAUI
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Chapter 3: ado.net
Chapter 3: ado.netChapter 3: ado.net
Chapter 3: ado.net
 
kotlinx.serialization
kotlinx.serializationkotlinx.serialization
kotlinx.serialization
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Python OOPs
Python OOPsPython OOPs
Python OOPs
 
Javascript
JavascriptJavascript
Javascript
 

En vedette

Desmistificando Tecnologias
Desmistificando TecnologiasDesmistificando Tecnologias
Desmistificando TecnologiasJuliano Martins
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaJuliano Martins
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoJuliano Martins
 
Software livre em minha carreira
Software livre em minha carreiraSoftware livre em minha carreira
Software livre em minha carreiraJuliano Martins
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrJuliano Martins
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Juliano Martins
 
IBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarIBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarHamisi Kibonde
 
Apresentação web services
Apresentação web servicesApresentação web services
Apresentação web servicesVitor Fonseca
 
ASP.NET Web API no BluDotNet
ASP.NET Web API no BluDotNetASP.NET Web API no BluDotNet
ASP.NET Web API no BluDotNetGiovanni Bassi
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesWaldemar Neto
 
RESTful Web Services with Jersey
RESTful Web Services with JerseyRESTful Web Services with Jersey
RESTful Web Services with JerseyScott Leberknight
 
Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0Dmytro Chyzhykov
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesNed Potter
 

En vedette (15)

Desmistificando Tecnologias
Desmistificando TecnologiasDesmistificando Tecnologias
Desmistificando Tecnologias
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel Híbrida
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile Híbrido
 
Software livre em minha carreira
Software livre em minha carreiraSoftware livre em minha carreira
Software livre em minha carreira
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
 
IBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarIBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDar
 
Apresentação web services
Apresentação web servicesApresentação web services
Apresentação web services
 
ASP.NET Web API no BluDotNet
ASP.NET Web API no BluDotNetASP.NET Web API no BluDotNet
ASP.NET Web API no BluDotNet
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
WebServices intro
WebServices introWebServices intro
WebServices intro
 
RESTful Web Services with Jersey
RESTful Web Services with JerseyRESTful Web Services with Jersey
RESTful Web Services with Jersey
 
Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 

Similaire à Criando um Web Service RESTful com Jersey

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFRafael T. C. Soares (tuelho)
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMaurício Linhares
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
Tutorial WebSocket em Java
Tutorial WebSocket em JavaTutorial WebSocket em Java
Tutorial WebSocket em Javalucascsoliveira
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 

Similaire à Criando um Web Service RESTful com Jersey (20)

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
JSF & REST
JSF & RESTJSF & REST
JSF & REST
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação Web
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Tutorial WebSocket em Java
Tutorial WebSocket em JavaTutorial WebSocket em Java
Tutorial WebSocket em Java
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Python 08
Python 08Python 08
Python 08
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 

Criando um Web Service RESTful com Jersey

  • 1. Web Services RESTful Passo a Passo para criação de um Web Service RESTfull com Jersey / Eclipse / Tomcat Testado também em JBoss e WebSphere Juliano Marcos Martins juliano.jmm@gmail.com http://jmmwrite.wordpress.com
  • 2. Jersey ● API Java que implementa JAX-RS ● Open source ● Utilitários ● https://jersey.java.net/index.html ● Especificação https://jax-rs-spec.java.net/
  • 3. Passo 1 ● Baixar a Jersey de https://jersey.java.net/download.html OBS: Existem várias formas diferentes de se implementar, a utilizada aqui, é a que considero a mais simples. Meu fim é didático, não me preocupo nesse momento em desenvolver um código a prova de falhas.
  • 4. Passo 2 ● Criar um projeto Dinâmico WEB no Eclipse ● Dei o nome de RestTeste ● Adicionei o projeto a um EAR chamado RestTeste ● Marquei a opção abaixo para gerar o web.xml (caso nao tenha marcado, é possível gerar posteriormente)
  • 5. Passo 3 ● Adicionar as libs abaixo da Jersey ao WEB-INF/lib do projeto
  • 6. Passo 4 ● Alterei o arquivo WEB.XML – adicionei a parte em laranja, nela, estou mapeando os serviços que criarei. <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>RestTeste</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description>JAX-RS Tools Generated - Do not modify</description> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
  • 7. Passo 5 ● Criei uma classe chamada ClienteServico
  • 8. Passo 6 ● Implementei o Web Service. Veja que anotei com @Path para “ouvir” em /clientes. ● O metodo irá “listar” clientes no formato JSON package br.com.jmmwrite.servicos; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; @Path("/clientes") public class ClientesServico { @GET @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") public String selectAll() { String clientes = "{'nome': 'Cliente 1','endereco': 'Rua do Cliente 1','RG':3030030066}," + "{'nome': 'Cliente 2','endereco': 'Rua do Cliente 2','RG':1010010011}"; return clientes; } }
  • 9. Passo 6.1 ● No exemplo, estou simplesmente listando algo “hardcoded”. ● Normalmente, neste ponto iríamos efetuar uma invocação a um DAO que iria trazer os dados do banco, e utilizariamos alguma API, tal como GSON, para transformar a lista de clientes num objeto Json bem formatado. ● Também teríamos preocupação com algum mecanismo de segurança para não expor para o mundo um serviço dessa forma.
  • 10. Passo 7 ● Clicamos no projeto criado e vamos em Run on Server para testar:
  • 11. Passo 8 ● O projeto deve subir sem erros e ser acessível pela URL http://127.0.0.1:8080/RestTeste/rest/clientes/
  • 12. Próximos passos ● Como sugestão de estudo, é interessante construir um CRUD. ● Uma dúvida comum é como receber parametros para Inserir/Alterar/Excluir informações, uma forma simples é com o código do proximo slide.
  • 13. Passo 9 ● O método abaixo recebe parâmetros, adicione o mesmo ao seu Web Service: @GET @Path("/inserir") @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") public String insertCliente(@Context UriInfo uriInfo ) { // queryParam String nome = uriInfo.getQueryParameters().getFirst("nome"); String endereco = uriInfo.getQueryParameters().getFirst("endereco"); String rg = uriInfo.getQueryParameters().getFirst("rg"); String cliente = "{'nome': '" + nome + "','endereco': '" + endereco + "','rg':" + rg + "}"; return cliente; }
  • 14. Passo 9 ● Invoque-o utilizando a URL http://127.0.0.1:8080/RestTeste/rest/clientes/inserir? nome=juliano&endereco=ruax&rg=5555555555599
  • 15. Conclusão ● A ponta do Iceberg é essa. Com esta apresentação você consegue construir um simples CRUD. ● Cada vez mais o mundo demanda Web Services, principalemente com o número crescende de aplicações móveis que acessam aplicativos WEB e Legadas. ● Tenha em mente que implementar um serviço é relativamente fácil, qualquer pessoa implementa, porém, a preocupação com segurança e escalabilidade (volumetria/carga), não são comuns. Cuidado com os problemas que isso possa te gerar! ● Enjoy!