Comunicação com web services
Sabemos que uma interface, por melhor que seja, não é nada útil se os dados por ela gerenciados não forem salvos num banco de dados. Infelizmente utilizar os recursos do browser para salva-los é inviável, pois os dados estariam disponíveis apenas para o próprio usuário. A verdade é que desenvolvemos sistemas para compartilhar informações com outras pessoas e para isso precisamos de um local centralizado para armazenar e acessar estas informações.
A natureza de uma aplicação de browser é que toda a interação com os dados é feita em memória e no computador do usuário. Desde o input, passando pela validação, modificação e indo até a publicação das informações, tudo é feito pelo Javascript que é interpretado pela engine existente no navegador. Para salvar é preciso enviar a um servidor.
O Vue.js é mestre em levar a informação de um lado a outro porém não é sua responsabilidade persistir a informação e torna-la disponível para outros clientes. Assim, depende de um web service para desempenhar este papel. Atualmente o tipo mais comum de web service é o REST e os dados são trafegados codificados com JSON.
Muitos frameworks Javascript já trazem por padrão uma biblioteca para se comunicar com um web service, comunicação que é feita utilizando AJAX mas este não é o caso do Vue.js: seu core contém apenas o necessário para implementar o padrão MVVM e então é necessário incluir uma biblioteca que proverá recursos para a comunicação.
Felizmente o próprio time de desenvolvimento disponibiliza uma excelente opção para chamadas AJAX: trata-se do Vue-resource, que pode ser facilmente instalado com o comando npm i --save vue-resource
. Sua configuração também é bem simples, bastando importa-lo e informar ao Vue Object que ele utilizará a biblioteca. Vejamos como fica ao utilizar o Vue com um module bundler…
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
new Vue({
el: 'body'
})
Dica: caso você inclua tanto o Vue quanto o Vue-resource via tag
<script>
então não será necessária a utilização deVue.use(VueResource)
uma vez que a biblioteca reconhece o Vue no objeto window e se auto-instala.
Após estes passos simples de configuração você ganha a propriedade $http
em todos os seus componentes, podendo então utiliza-la para suas chamadas. Os métodos retornam Promises e então métodos then()
e catch()
podem ser encadeados para finalizar o processamento da requisição.
export default {
ready () {
this.$http.get('http://webservice-url').then(res => {
// faça algo com o retorno do web service
})
}
}
O Vue-resource é a biblioteca de comunicação mais utilizada com o Vue.js
”- Mas eu preciso utilizar esta biblioteca? Gosto tanto de jQuery!” ^.^
A resposta é simples: o Vue.js não te obriga a nada. Sim você pode usar jQuery ou até mesmo outra, como superagent.
No caso de jQuery basta fazer o include numa tag <script>
e então o objeto jQuery estará disponível como propriedade do objeto window.
export default {
ready () {
window.jQuery.get('http://webservice-url', res => {
// faça algo com o retorno do web service
})
}
}
ou simplesmente…
export default {
ready () {
$.get('http://webservice-url', res => {
// faça algo com o retorno do web service
})
}
}
Caso você opte por incluir jQuery utilizando npm e seu module bundler predileto então você provavelmente já sabe como tornar jQuery disponível para seus scripts. O mesmo vale para outra biblioteca, como a citada superagent.
Para finalizar segue um exemplo funcional utilizando Vue-resource:
E assim a vida segue, com o Vue.js tornando nossa vida muito mais fácil de ser vivida.
Obrigado por ter lido,