Axios

Posted Xmengyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axios相关的知识,希望对你有一定的参考价值。

一.为什么要对axios封装?

axios 封装了原生的 XHR,让我们发送请求更为简单,但假设在一个成百上千个 vue 文件的项目中,我们每一个 vue 文件都要写 axios.get()或 axios.post() 岂不是很麻烦?后期的维护也不方便,所以我们要对 axios 进行进一步的封装。

二.怎样封装?

       1. 在src下面新建一个http文件夹

        (1)新建一个service文件

        (2)导入axios包及vant中Toast组件            

import axios from 'axios';
import {Toast} from 'vant';

        (3)创建axios、baseUrl、与超时时间

//1 创建axios baseURL 超时时间
const service = axios.create({
    baseURL:"https://api.it120.cc/small4",
    timeout: 5000,
})

        (4)设置请求拦截器

//2 请求
service.interceptors.request.use(
    (config) => {
           Toast.loading({//loading
            message: '加载中...',
            forbidClick: true,
            duration:30000,
          });
 
        return config
    }, (error) => {//捕获错误信息
        return Promise.reject(error)
    })

        (5)设置响应拦截器

//3 响应
service.interceptors.response.use(
    (response) => {
        
        Toast.clear()//关闭loading
        return Promise.resolve(response)
    }, (error) => {
        return Promise.reject(error)//对数据进一步处理
    })

        (6)通过export导出


export default service

        总:

import axios from 'axios'
import {Toast} from "vant"
 
//1 创建axios baseURL 超时时间
const service = axios.create({
    baseURL:"https://api.it120.cc/small4",
    timeout: 5000,
})
//2 请求
service.interceptors.request.use(
    (config) => {
           Toast.loading({//loading
            message: '加载中...',
            forbidClick: true,
            duration:30000,
          });
 
        return config
    }, (error) => {//捕获错误信息
        return Promise.reject(error)
    })
//3 响应
service.interceptors.response.use(
    (response) => {
        
        Toast.clear()//关闭loading
        return Promise.resolve(response)
    }, (error) => {
        return Promise.reject(error)//对数据进一步处理
    })
//4 导出
export default service

2.在新建一个app.js文件

export function smsCode(参数名){
    return service({
        url:接口地址,
        data:参数名,
        method:请求参数
    })
}

3.在页面中使用

import { 方法名:如smsCode } from "@/http/api";

   async  方法名(){
               let res=await smsCode()
        }

        console.log(res) log一下

以上是关于Axios的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

ajax与 axios的基础讲解(附代码及接口)

项目集成element-plus和axios

回归 | js实用代码片段的封装与总结(持续更新中...)

执行带有axios的GET请求时出现401错误

前端面试题之手写promise