Existem diversos posts com exemplos de utilização de Rest na internet bem simples, porém apenas com os jars recomendado não consegui retornar via json, apenas xml. O grande segredo está nos jars jackson. Então vamos lá...
Crie um Dynamic Web Project no Eclipse:
Minha estrutura ficou assim:
Os jars necessários para aplicação funcionar estão aí. No meu caso, utilizei o servidor Weblogic, mas poderia ser o Tomcat, por exemplo.
web.xml
Entendendo...LaboratorioRest RestController com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages br.com.adriano.rest com.sun.jersey.api.json.POJOMappingFeature true RestController /*
Definimos um nome para servlet para garantir acesso a API Rest.
RestController com.sun.jersey.spi.container.servlet.ServletContainer
Definimos um parâmetro para dizer qual package vai conter os serviços Rest.
com.sun.jersey.config.property.packages br.com.adriano.rest
Outro parâmetro necessário para o Jersey converter o objeto em JSON.
com.sun.jersey.api.json.POJOMappingFeature true
Usuario.java
package br.com.adriano.model; import javax.xml.bind.annotation.*; public class Usuario { private String login; private String senha; public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } @Override public String toString() { return super.toString(); } }
Caso queira retornar XML, você deve anotar @XmlRootElement na classe Usuario. Para Json não é necessário.
UsuarioResource.java
package br.com.adriano.rest; import java.util.*; import javax.ws.rs.*; import javax.ws.rs.core.*; import br.com.adriano.model.*; @Path("/usuarios") public class UsuarioResouce { static private MapusuarioMap; static { usuarioMap = new HashMap (); Usuario usuario1 = new Usuario(); usuario1.setLogin("admin"); usuario1.setSenha("passAdmin"); usuarioMap.put(1, usuario1); Usuario usuario2 = new Usuario(); usuario2.setLogin("adriano"); usuario2.setSenha("adr123"); usuarioMap.put(2, usuario2); } @GET @Path("/json") @Produces(MediaType.APPLICATION_JSON) public List getUsuarios() { return new ArrayList (usuarioMap.values()); } }
Entendendo...
@Path é o caminho que será acessado pela url para chegar até nossa classe UsuarioResource.
@Path("/usuarios") public class UsuarioResouce
Criei uma massa de dados como teste apenas para emular dados vindo do banco.
static private MapusuarioMap; static { usuarioMap = new HashMap (); Usuario usuario1 = new Usuario(); usuario1.setLogin("admin"); usuario1.setSenha("passAdmin"); usuarioMap.put(1, usuario1); Usuario usuario2 = new Usuario(); usuario2.setLogin("adriano"); usuario2.setSenha("adr123"); usuarioMap.put(2, usuario2); }
@Produces - Definimos o tipo de retorno de dados que queremos, no caso, JSON. (Caso queria XML utilize ("text/xml").
@GET @Path("/json") @Produces(MediaType.APPLICATION_JSON) public ListgetUsuarios() { return new ArrayList (usuarioMap.values()); }
A partir daí, podemos subir a aplicação. Abra o browser e digite o caminho da url do seu projeto. No meu caso foi http://localhost:7001/LaboratorioRest/usuarios/json. Deve aparecer a lista do objeto Usuario em JSON.
[{"login":"admin","senha":"passAdmin"},{"login":"adriano","senha":"adr123"}]
Bom, é isso! Sem os jars 'jackson' a página não retornava o json. Espero ter ajudado.
Boa Valeu!
ResponderExcluir