Integração de Vue Resource com API Backend no Projeto vue-sui-demo: Implementação Prática

Configuração Inicial do Vue Resource

No projeto vue-sui-demo, o Vue Resource é integrado como plugin para gerenciar requisições HTTP. A configuração principal ocorre no arquivo src/app.js, onde o plugin é carregado e as opções globais são definidas. O exemplo abaixo demonstra como estabelecer a raiz das requisições com base no abmiente de execução e ativar a emulação de formato JSON:

import VueResource from 'vue-resource'
Vue.use(VueResource)

const apiRoot = process.env.NODE_ENV === 'development' 
  ? '/local/assets' 
  : 'https://api.producao.com/dados'
Vue.http.options.root = apiRoot
Vue.http.options.emulateJSON = true

Essa configuração permite que as requisições se adaptem automaticamente entre desenvolvimento e produção, simplificando a manutenção.

Requisições de Dados em Componentes

Para carregar dados, os componentes utilizam this.$http. O componente de carrossel no diretório src/components/Carrossel.vue busca informações de um arquivo JSON local:

this.$http.get('slides.json')
  .then(res => {
    this.listaSlides = res.data
  })
  .catch(err => {
    console.error('Falha ao obter slides:', err)
  })

De maneira semelhante, a view de tarefas em src/views/Principal.vue recupera dados assincronamente:

async function carregarTarefas() {
  try {
    const resposta = await this.$http.get('atividades.json')
    this.tarefas = resposta.data
  } catch (erro) {
    this.erroCarregamento = true
  }
}

Adaptação para Ambientes Diferentes

O projeto utiliza variáveis de ambiente para direcionar as requisições. Durante o desenvolvimento, os dados são obtidos de arquivos JSON no diretório src/assets/, como slides.json e atividades.json. Em produção, as requisições apontam para endpoints de API reais, configurados via arquivos como config/ambiente.dev.js e config/ambiente.prod.js. Essa abordagem garante uma transição suave entre estágios.

Técnicas para Melhorar a Experiência do Usuário

Tratamento de Erros

Adicionar tratamento de erros robusto é essencial. Um padrão comum inclui capturar exceções e exibir feedback ao usuário:

this.$http.get('/endpoint/dados')
  .then(resultado => {
    processarDados(resultado.data)
  })
  .catch(erro => {
    this.mostrarMensagem('Erro na comunicação com o servidor')
    registrarLog(erro)
  })

Indicadores de Carregamento

Para aprimorar a interatividade, utilize estados de carregamento durante as requisições:

this.carregando = true
this.$http.get('relatorio.json')
  .then(dados => {
    this.relatorio = dados.data
  })
  .finally(() => {
    this.carregando = false
  })

Mdoularização de Chamadas de API

Para projetos compelxos, encapsule as requisições em um módulo dedicado. Crie um arquivo src/servicos/api.js com funções específicas:

import Vue from 'vue'

export const apiServico = {
  obterTarefas: () => Vue.http.get('atividades.json'),
  buscarSlides: () => Vue.http.get('slides.json'),
  enviarFeedback: (dados) => Vue.http.post('/feedback', dados)
}

Nos componentes, importe e utilize essas funções para manter o código organizado:

import { apiServico } from '@/servicos/api'

export default {
  methods: {
    async iniciarDados() {
      const tarefas = await apiServico.obterTarefas()
      this.tarefas = tarefas.data
    }
  }
}

Essa estrutura facilita a manutenção e a evolução das integrações com o backend.

Tags: Vue.js Vue Resource SUI-Mobile javascript API REST

Publicado em 6-21 01:30