CRUD JAX-RS ou CRUD via managed beans com persistencia em DAO?

Pode ser uma pergunta ridícula, mas como eu sou novo em programação web tudo pra mim é novidade.

Estou prestando uma prova para entrar em uma empresa, onde essa prova foi solicitado que eu implementasse um CRUD via JAX-RS. Eu não conheço Rest, então comprei o livro da casa do código para poder aprender rapidamente os conceitos e colocá-los em prática.

A minha dúvida é que pra que realmente é usado JAX-RS? Quer dizer, as operações que eu posso fazer com o protocolo são as mesmas que eu faria usando managed beans com persistencias nos meus metodos dentro dos DAOs.

A única coisa que fiquei com pé atrás foi em relação aos formatos XML e Json que o rest utiliza para transportar dados.

Mas na real, eu ainda não vi vantagens de utilizar JAX-RS…

Antes de alguém querer atacar pedra em silêncio, eu venho de programação de baixo nível para eletrônicos, então, tudo relacionado a web e sistemas de alto nível é coisa de outro mundo pra mim.

Alguém poderia me dar uma luz?

A prova em questão pediu para fazer esse CRUD com JAX-RS, eu entendi a teoria do HTTP e REST, mas como tenho mais prática usando managed beans, caso eu faça o CRUD com managed beans a empresa consideraria errado, ou eu realmente tenho que aprender a criar o sistema usando o JAX-RS?

Eu não diria que seria considerado errado, mas se eles usam JAX-RS, faz com que qualquer coisa diferente a isso fosse remar contra a maré. aliás, também me sinto perdido em web, mas vamos ter que se adaptar pois é o mercado que mais cresce.

1 curtida

Ola @Valli eu tenho esse pequeno projeto aqui em Jax-RS que eu esta aprendendo, quase um crud, so esta faltando a opção de editar : https://github.com/Daniel-Dos/DanielDias-MongoDB/tree/master/RestFul-MongoDB

nele utilizo RestEasy, CDI, Hibernate OGM com MongoDB rodando no tomcat.

tenho esse com Spring boot -rest : https://github.com/Daniel-Dos/JavaJR

e tenho esse com jersey 1,2 e resteasy : https://github.com/Daniel-Dos/RestFul-Exemplos

{ },s.

Opa.

Valeu @Daniel_Dias.

Vou dar uma olhada nos projetos para ter um caminho de base, com certeza vai ajudar bastante! Obrigado.

1 curtida

perfeito amigo. { },s

Fala @Daniel_Dias
Cara, dei uma estudada no seu projeto, e aproveitei para seguir algumas dicas abordadas no livro REST da casa do código.

Eu implementei o projeto como mencionei aqui antes, porém, estou recebendo código 404 quando tento obter o xml pela url.

Caso eu acesse a mesma url com o fim .xhtml a minha página carrega certinho, mas a idéia seria que eu conseguisse obter o xml dos elementos que fossem listados na minha página.

Se não for pedir muito, será que você conseguiria me ajudar?

Eu cheguei a criar um outro tópico detalhando o problema:

Grato desde já.

Para desacoplar a comunicação entre módulos ou sistemas distintos.

A arquitetura REST permite que você desacople completamente o cliente do servidor. Ambos dependem apenas de HTTP e algum protocolo de representação (como JSON ou XML). Você pode ter o cliente e o servidor implementados em linguagens completamente diferentes.

Imagine que você tem um aplicativo móvel, uma aplicação desktop ou mesmo outro sistema web que quer consumir e interagir com os dados do seu sistema. Você até consegue utilizar JSF ou JSP só para transferir os dados, mas isso vai dar muito mais trabalho e consumir mais recursos do que deveria. A especificação JAX-RS faz para você todo o trabalho de interpretar a requisição do cliente e invocar o método certo dos seus recursos, alem de facilitar a construção da resposta à requisição.

E as especificações não são mutualmente exclusivas. Você pode invocar teus EJBs de dentro dos recursos JAX-RS. Pense no JAX-RS como sendo a VIEW do seu MVC, só que ela só mostra dados num formato bem cru e recebe comandos (requisições HTTP).

Aprenda o que é REST e o que é um serviço RESTful e tente implementar isso usando os managed beans. Depois tente com JAX-RS. A diferença vai ser clara :slight_smile:

Oi @lvbarbosa
alguns conceitos já começaram a fazer sentido depois de olhar vários exemplos.
O problema agora, é como eu citei no meu último post aqui, é não estar conseguindo implementar ou fazer funcionar.
Quer dizer. Eu consigo acessar as minhas urls sem problemas e carregar os meus xhtml pelo jsf. O problema é que quando tento obter os valores por xml através do jax-rs eu recebo 404 not found.

Cheguei a colocar os detalhes em Falha ao localizar recurso por JAX-RS

Consegueria me ajudar?

Acho que começamos a andar.

Fiz algumas alterações conforme os pontos que você citou @lvbarbosa e dentro do escopo de criar um novo package.

Fiz a requisição e tive o retorno

Could not find MessageBodyWriter for response object of type: java.util.ArrayList of media type: application/xml

Saberia me guiar no que preciso fazer?

MessageBodyWriter é a interface que coordena o mapeamento de um tipo do Java para alguma representação. Nesse caso, você precisa de um MessageBodyWriter que converta de ArrayList para o mime type application/xml

Qual container de aplicação você está utilizando? Geralmente já vem as bibliotecas para XML e JSON.

De qualquer forma, inclua no seu WAR algum framework que faça essa conversão. Como você está usando RESTEasy, a dependência pode ser essa aqui:

https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-jackson-provider/3.1.4.Final

Se eu não me engano, com XML, você precisa colocar anotações no objeto que está sendo retornado e que vai ser convertido para XML. Tipo @XMLRootElement. Pesquisa por JAXB no Google.

ISSO!

Funcionou! Finalmente! Cara, tô até chorando de alegria(por dentro), eu não sabia nada de Rest, e passei os últimos dias estudando material pra caramba para tentar implementar algo funcional. E finalmente consegui!

Valeu mesmo pelas dicas e auxílio @lvbarbosa e ao @Daniel_Dias que compartilhou os repositórios de exemplo que ele fez, e me ajudou de maneira indispensável.

Valeu galera! =D

1 curtida