封装axios请求

本文档详细介绍了如何在Vue项目中封装axios,以实现HTTP请求的统一管理。首先通过npm安装axios,然后创建request.js进行基础配置,如设置baseURL和超时时间。接着,在home.js中导入并扩展request.js,定义特定页面的请求。最后在test.vue组件中,调用home.js中的方法获取数据,并在created钩子中处理响应。这样实现了axios在Vue项目的模块化和复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般的Vue项目中需要封装axios请求。

首先在主项目中使用命令行$ npm install axios下载axios

创建request.js

// 引入axios
import axios from 'axios'

export function axiosrequest(config){
  // 进行基础配置
  const instance = axios.create({
    baseURL:'http://localhost:3000/',
    timeout:10000
  })
  return instance(config) 
}

在这里封装axios的基础配置


创建home.js

import {get} from './request'

export function homeMultidata(){
  return axiosrequest({
    url:'posts/1',
  })
}

进行更加详细的页面配置,可以创建多个类似home.js的细分配置文件,它们共同拥有request.js的基础配置

创建test.vue

<template>
</template>

<script>
    //获取 home.js 中的 homeMultidata
    import {homeMultidata} from './home'

    created(){
      homeMultidata().then(res => {
        // 获取到的res来自  http://localhost:3000/posts/1
        this.banner = res.posts
        this.recommend = res.posts
      })
    }
</script>

<style>
</style>
在 Vue.js 开发中,封装 Axios 请求是一种常见的做法,通常是为了简化全局的 API 调用,避免在每个组件中都重复引入 Axios 并设置相同的配置。以下是创建一个简单的 Axios 封装实例: ```javascript import axios from 'axios'; import { MessageBox } from 'element-ui'; // 创建一个 Vue 插件 export default { install(Vue) { // 创建一个 Vue 实例的方法 Vue.prototype.$axios = axios.create({ baseURL: process.env.BASE_API, // 当前应用的基础URL timeout: 5000, // 设置默认超时时间 headers: { 'Content-Type': 'application/json', // 默认请求头 }, }); // 添加全局错误处理 Vue.prototype.$httpError = (error) => { if (error.response) { console.log(error.response.data); MessageBox.error(error.response.data.message || error.response.status); } else { console.error('未知错误', error); } }; // 错误拦截器 Vue.prototype.$axios.interceptors.response.use( response => response, error => { this.$httpError(error); return Promise.reject(error); } ); // 请求拦截器 Vue.prototype.$axios.interceptors.request.use( config => { // 在发送请求之前做些什么 return config; }, error => { // 对请求错误做些什么 this.$httpError(error); return Promise.reject(error); } ); }, }; ``` 通过这种方式,你在 Vue 组件中就可以像下面这样轻松地发送请求了: ```vue methods: { fetchData() { this.$axios.get('/api/data').then(response => { // 处理成功响应 }).catch(this.$httpError); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值