Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Comunicação com o backend.

Olá, eu estou gostando muito do curso, tanto que estou tentando consumir o máximo possível de informações para sanar todas as dúvidas.

Bom, pelo que já entendi a nossa aplicação consome endpoints no padrão REST, disponibilizados pelo nosso servidor que está preparado para isso.

Quais as outras formas que posso usar no Angular para, digamos, consumir, recursos do backend?

Grato.

5 respostas

Olá Hugo,

a principio o Angular disponibiliza o serviço $http que suporta requisições de baixo nível utilizando o protocolo http.

Também existe o módulo ngResource, que disponibiliza o serviço $resource e surge como uma alternativa para o consumo de serviços RESTful em um nível mais alto, abstraindo o trabalho necessário com o $http.

No Github do Angular existe o seguinte projeto ainda em desenvolvimento.

https://github.com/angular/ngSocket

um serviço que se comunica com servidores que tem suporte a WebSocket.

Porém ainda há a possibilidade de utilizar recursos como a injeção de dependências do Angular para criar suas próprias abstrações de bibliotecas que fazem comunicação com o server, facilitando a vida do time de desenvolvimento. Segue um exemplo utilizando Socket.IO.

http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets/?redirect_from_locale=pt

Também vi alguns exemplos ( por cima ) de desenvolvedores que criaram módulos para abstrair o consumo de SOAPServers.

Att.

Então não tem como eu usar uma biblioteca de persistência como JPA e fazer meu e usar algum serviço para se comunicar com ele? São apenas essas duas formas que você informou acima?

Eu entendi que posso usar qualquer tecnologia de persistência, mas de algum modo eu preciso ter alguma outra tecnologia para fazer as consultas, inserts, updates e deletes, que se comunique com o Angular. Meu pensamento está certo?

Isso mesmo Hugo,

a persistência vai ser uma camada do seu servidor, portanto você deverá disponibilizar uma camada de serviço no server que será consumida pelo cliente com o Angular e que terá acesso a sua camada de persistência.

No seu caso que utiliza Java tem diversas opções, desde um servlet até um serviço REST utilizando JaxWS, assim como poderá utilizar algum framework de sua preferência, como o SpringMVC ou VRaptor.

Com o Angular você somente poderá armazenar os dados localmente no cliente, o que também é interessante caso você deseje ter Sincronização em Tempo Real no seu sistema, que é a possibilidade do usuário trabalhar offline e o seu aplicativo sincronizar os dados automaticamente quando a conexão voltar, assim como eh feito com o WhatsApp e Evernote.

Segue mais detalhes sobre o armazenamento local de dados com Angular no link abaixo:

https://docs.google.com/document/d/1DMacL7iwjSMPP0ytZfugpU4v0PWUK0BT6lhyaVEmlBQ/mobilebasic

Sobre o seu serviço disponibilizado no server, VC pode encontrar diversos cursos sobre as tecnologias que eu comentei na trilha de Java para Desenvolvimento Web do Alura.

Att.

Hugo, não importa o que você use no servidor, não importa mesmo. O que importa é você compreender o que é o padrão REST e como utilizando sua tecnologia backend você implementa seu padrão. Se você fez usando Java e depois converte para Python, o angular nem fica sabendo.

Em Java, estude Jax-RS e como criar webservices com o padrão Rest.

Se não quer usar Rest, crie um webservices que devolva json e acesse esse endereço pelo $http.

solução!

Djonathan entendi, eu já tinha sacado que poderia usar qualquer tecnologia como Spring entre outras. Mas o que eu precisava entender mesmo era se mesmo usando um serviço para disponibilizar meu backend eu preciso fazê-lo falar com o Angular.

Mas como flávio e vc tbm, não tem outro jeito a não ser usando web service para conversar com o Angular. Era isso que eu queria entender.

Pois todos os franworks mvc que já vi até aqui a comunicação com o backend é simples e o bind na view é mais semples ainda (objeto.atributo, por exemplo). Mas no Angular eu tenho de consumir um web service para isso ou algum tipo de serviço que seja acessado por http.

Bom, bom! Obrigado, já entendi!