首页 > 技术文章 > axios封装

liudaya 2020-05-27 15:15 原文

1.在src目录下新建api文件夹,新建api.js

 

2.在api.js中添加请求和相应拦截

//api.js (在src文件下自定义一个api.js)
import axios from "axios"

//创建一个axios对象
//const 创建一个只读文件
const instance = axios.create({
    baseURL: 'http://127.0.0.1:8000/',
    //请求超时
    timeout: 5000
})

//请求拦截
//所有的网络请求都会先走这个方法、
instance.interceptors.request.use(
    function (config) {
        // console.group('全局请求拦截')
        // console.log(config)
        // console.groupEnd();
        //获取token
        const token = localStorage.getItem('token')
        if (token) {
            config.headers.Authorization = "JWT " + token
        }

        return config
    },
    function (err) {
        return Promise.reject(err)
    }
);


//响应拦截
//所有的网络请求返回数据之后都会先执行此方法
instance.interceptors.response.use(
    function (response) {
        // console.group('全局响应拦截')
        // console.log(response)
        // console.groupEnd();  //这是一种格式
        return response
    },
    //如果失败
    function (err) {
        //存在请求失败
        if (err.response) {
            console.log(err.response)
            //请求失败状态码 == 500
            if (err.response.status == 500) {
                //跳转到首页
                window.location.href = 'http://127.0.0.1:8080/'
            }
        }
        return Promise.reject(err)

    }
);

3.封装路由

// p指给Register 传递的参数
// 一个文件里可以有多个 exprot  

// 注册
export const 自定义方法名 = p => { return instance.post('后端路由/', p) }
 // 获取手机验证码
  export const code = p => { return instance.get('reg/', p) }

4.在组件中引入自定义方法

<script>
import { 定义的方法名 } from 'api.js路径';
</script>

5.使用

定义的方法名().then(res => {
              调用成功后的操作  
            });

 

推荐阅读