axios 如何正确进行封装?

使用Axios优化Vue项目网络请求
本文介绍如何在Vue项目中使用Axios库优化网络请求流程,包括安装配置、请求响应拦截、自定义请求方法及接口管理,提升项目网络交互效率。

第一步:npm install axios --save安装axios

第二步

第二步:在src目录下新建一个request文件夹,并创健一个http.js和api.js文件,其中api.js是管理我们接口的文件。

以下是http.js的配置

import axios from 'axios'
import { Toast } from 'vant'//这里我用的是vant组件的弹窗

//默认请求地址
axios.defaults.baseURL = 'http://shopping.com/'

//请求超时时间
axios.defaults.timeout = 10000

//请求头
axios.defaults.headers.post['Content=Type']='application/json'

//请求拦截
axios.interceptors.request.use(
    config => {
        return config
    },
    error => {
        return Promise.error(error)
    }
)

//响应拦截器
axios.interceptors.response.use(
    response => {
        // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据 
        // 否则的话抛出错误
        if(response.status === 200){
            return Promise.resolve(response)
        } else {
            return Promise.reject(response)
        }
    },
    // 服务器状态码不是2开头的的情况 
    // 这里可以跟你们的后台开发人员协商好统一的错误状态码  
    // 然后根据返回的状态码进行一些操作,例如登录过期提示,错误提示等等
    error => {
        if(error.response.status){
            switch (error.response.status){
                // 401: 未登录  
                // 未登录则跳转登录页面,并携带当前页面的路径  
                // 在登录成功后返回当前页面,这一步需要在登录页操作
                //case 401:
                case 404:
                    Toast({
                        message:'网络请求不存在',
                        duration:1500,
                        forbidClick:true
                    })
                    break
                case 400:
                    Toast({
                        message:'服务器繁忙',
                        duration:1500,
                        forbidClick:true
                    })
                    break
                default:
                    Toast({
                        message:'其它提示',
                        duration:1500,
                        forbidClick:true
                    })  
            }
            return Promise.reject(error.response)
        }
    }
)
/** 
 * get方法,对应get请求
 * @param {String} url [请求的url地址] 
 * @param {Object} params [请求时携带的参数] 
 */

 export function get(url,params=''){
     return new Promise((resolve,reject)=>{
         axios.get(url,{
             params
         }).then(res=>{
             resolve(res.data)
         }).catch(err => {
             reject(err.data)
         })
     })
 }

 /**  
  * post方法,对应post请求  
  * @param {String} url [请求的url地址]  
  * @param {Object} params [请求时携带的参数]  
  */

 export function post(url,params){
    return new Promise((resolve,reject)=>{
        axios.post(url,{
            params
        }).then(res=>{
            resolve(res.data)
        }).catch(err => {
            reject(err.data)
        })
    })
}

具体配置请参考axios文档

以下是api.js

import { get,post } from './http'
//banner接口
export const apiBanner = banner => get('api/v1/banner',banner)

//boutique接口
export const apiBoutique = boutique => get('api/v1/boutique',boutique)

//special接口
export const apiSpecial = special => get('api/v1/special',special)
要对axios进行封装,你可以按照以下步骤进行操作: 1. 在src目录下新建一个request文件夹,并创建一个http.js和api.js文件,其中api.js是用来管理接口的文件。 2. 在http.js文件中导入axios库,并配置axios的一些全局设置,例如设置请求的baseURL、设置请求超时时间等。你可以按照自己的需求进行配置。然后,你可以定义一个get和post方法,用来发送GET和POST请求。这些方法可以使用axios库提供的方法来发送请求,并且可以根据需求进行封装。 3. 在api.js文件中,你可以导入http.js文件,并定义各种接口函数。每个接口函数对应一个具体的请求,你可以使用http.js中定义的get和post方法来发送请求,并返回一个Promise对象。在请求的路径中可以使用占位符来表示参数,例如'api/v1/banner'。你可以根据具体的接口需求来定义接口函数。 通过以上步骤,你就可以完成对axios封装,使得在项目中使用axios更加方便和统一。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [若依之中对于axios封装](https://download.youkuaiyun.com/download/weixin_43615570/87886798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [axios 如何正确进行封装?](https://blog.youkuaiyun.com/qq_38790019/article/details/85088744)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值