当前位置:首页 > VUE

vue实现api

2026-01-13 03:15:12VUE

Vue 实现 API 调用的方法

使用 Axios 发送 HTTP 请求

安装 Axios 依赖:

npm install axios

在 Vue 组件中引入并使用 Axios:

import axios from 'axios';

export default {
  methods: {
    fetchData() {
      axios.get('https://api.example.com/data')
        .then(response => {
          console.log(response.data);
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
}

使用 Vue Resource(已废弃)

Vue Resource 是早期的官方推荐库,现已不再维护,但部分旧项目可能仍在使用:

import Vue from 'vue';
import VueResource from 'vue-resource';

Vue.use(VueResource);

this.$http.get('https://api.example.com/data').then(response => {
  console.log(response.body);
}, error => {
  console.error(error);
});

使用 Fetch API

现代浏览器原生支持的 Fetch API:

vue实现api

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

封装 API 服务

创建独立的 API 服务文件(如 api.js):

import axios from 'axios';

const apiClient = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 1000,
  headers: { 'Content-Type': 'application/json' }
});

export default {
  getData() {
    return apiClient.get('/data');
  },
  postData(payload) {
    return apiClient.post('/data', payload);
  }
}

使用 Vuex 管理 API 状态

结合 Vuex 的状态管理:

vue实现api

// store/actions.js
import api from '../services/api';

export default {
  async fetchData({ commit }) {
    try {
      const response = await api.getData();
      commit('SET_DATA', response.data);
    } catch (error) {
      console.error(error);
    }
  }
}

处理跨域问题

配置 vue.config.js 解决开发环境跨域:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'https://api.example.com',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

使用 async/await 语法

更现代的异步处理方式:

export default {
  methods: {
    async fetchData() {
      try {
        const response = await axios.get('https://api.example.com/data');
        console.log(response.data);
      } catch (error) {
        console.error(error);
      }
    }
  }
}

添加请求拦截器

全局处理请求和响应:

axios.interceptors.request.use(config => {
  config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
  return config;
}, error => {
  return Promise.reject(error);
});

axios.interceptors.response.use(response => {
  return response;
}, error => {
  if (error.response.status === 401) {
    router.push('/login');
  }
  return Promise.reject(error);
});

标签: vueapi
分享给朋友:

相关文章

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue实现xss

vue实现xss

XSS 攻击简介 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,可能导致数据泄露或会话劫持。 Vue 中的 XSS…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue 实现评分

vue 实现评分

Vue 实现评分功能 在 Vue 中实现评分功能可以通过多种方式完成,包括使用第三方组件库或自定义实现。以下是两种常见的方法: 使用第三方组件库(如 Element UI) Element UI 提…