Web Services com Resteasy

REST ou Representational State Transfer surgiu em uma tese de doutorado escrita por Roy Fielding, diferente do padrão SOAP onde a comunicação ocorre por meio de um arquivo XML(mensagens) denominado WSDL, REST tira o máximo de proveito possível do protocolo HTTP com suas possíveis ações GET, POST, PUT e DELETE e conta ainda com o conceito de recursos para “manipular” os dados do Web Service.

Para este post será utilizado o Resteasy e o servidor de aplicação Jboss. Resteasy é um projeto mantido pela Jboss e é a implementação da especificação JAX-RS. O servidor de aplicação da Jboss contém o Resteasy embutido, logo faça apenas o download dele. Abaixo está o código de uma classe que será utilizado como entidade no exemplo:

@XmlRootElement
public class Pessoa {
  private Long id;

  private String nome;

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getNome() {
    return nome;
  }

  public void setNome(String nome) {
    this.nome = nome;
  }
}

Repare na anotação @XmlRootElement, ela garante que esta entidade será serializada no formato XML com todos os seus atributos.

Agora veja o código da classe que manipula a entidade Pessoa:

@Path("/pessoa/")
public class PessoaResource {

  @Get
  @Path("/{id}/")
  @Produces( { MediaType.APPLICATION_XML })
  public Pessoa getPessoa(@PathParam("id") Long id) {
    Pessoa pessoa = new Pessoa();
    pessoa.setId(id);
    pessoa.setNome("Nome " + id);

    return pessoa;
  }
}

Na classe PessoaResource existem duas anotações @Path, ao acessar esse recurso os dois Path serão concatenados, ou seja, será possivel acessá-lo da seguinte forma “http://localhost/pessoa/1”, onde “1” substitui o parâmetro “{id}”.

A anotação @PathParam(“id”) recupera o parâmetro declarado na anotação @Path(“/{id}/”) que será informado na URL, o @GET configura o método para que seja  invocado quanto a “action” do HTTP for “GET”.

A anotação @Produces( { MediaType.APPLICATION_XML }) trabalha em conjunto com a @XmlRootElement da nossa entidade Pessoa, aqui é importante destacar que a anotação @XmlRootElement serializa o objeto enquanto que a @Produces( { MediaType.APPLICATION_XML }) avisa que este recurso produzirá um retorno do tipo XML.

Salve as alterações, faça o deploy no servidor e acesse o seu Web Service por meio da URL: http://localhost:8080/pessoa/1 e você visualizará um arquivo XML com os atributos da entidade Pessoa definidos no método getPessoa.

Pronto agora você tem um Web Service REST =)

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s