二次封装axios接口

1. 安装axios             npm install axios --save

2.在utils里面建一个request.js文件夹,在里面写上下列代码,就对请求完成了封装

import axios from 'axios';
import router from "../router"; //用到了路由跳转
import { Message } from 'element-ui'; //用到了message组件

// 将axios.create创建实例(好处是如果有多台服务器,多个URL地址,我们就可以创建多个实例)
const service = axios.create({
    // process.env.NODE_ENV === 'development'       来判断是否开发环境
    baseURL: '请求根地址', 
    timeout: 5000,
    // 请求头
    headers: {
        'Content-Type': 'application/json',
        'Accept-Language': 'zh-CN'
    },
});

// 请求拦截器
service.interceptors.request.use(
    // 请求成功
    config => {
        const token = localStorage.getItem('ZNUTOKEN');
        if (token) {
            // 将token做为请求头
            config.headers['AdminToken'] = token;
        }
        return config;
    },
    // 请求失败
    error => {
        console.log(error);
        return Promise.reject();
    }
);

// 响应拦截器
service.interceptors.response.use(
    // 响应成功
    response => {
        // 如果返回200
        if (response.status === 200) {
            // 如果返回401
            if (response.data.code == 401) {
                // 跳转到登录页面
                router.push('/login');
                // 展示的信息
                Message({
                    // 设为true,那么message就会当作html片段
                    dangerouslyUseHTMLString: true,
                    // 返回过来的错误信息
                    message: response.data.msg,
                    type: 'error',
                    duration: 5000,
                });
            } else {
                // 返回的数据
                return response.data;
            }
        } else {
            // 返回一个带有拒绝原因的 Promise 对象。
            Promise.reject();
        }
    },
    // 响应失败
    error => {
        console.log(error);
        // 返回一个带有拒绝原因的 Promise 对象。
        return Promise.reject();
    }
);

export default service;

3.接下来就是将每个接口利用封装的请求前缀,请求头和拦截器进行二次封装,一般在api文件夹里面建一个index.js文件

有几点需要注意的:

1.   get请求用params做参数

2.   post请求用data做参数

3.   export表示导出这个数据

4.   url 里面的地址是接在前缀后面的地址

// 导入之前封装的request
import request from '../utils/request';

// 表格里面的数据(echarts)
export const fetchData = query => {
    return request({
        url: './table.json',
        method: 'get',
        params: query
    });
};
//登录
export function login(data) {
    return request({
        url: '/admin/login',
        method: 'post',
        data: data,
    });
}
//退出登录
export function logout(data) {
    return request({
        url: '/admin/logout',
        method: 'post',
        data: data,
    });
}
//用户列表
export function userList(params) {
    return request({
        url: '/user/list',
        method: 'get',
        params: params,
    });
}
//用户详细
export function userInfo(params) {
    return request({
        url: '/user/info',
        method: 'get',
        params: params,
    });
}

4.我们怎么样将这些接口用到页面里面去呢!,我们一般用import来引入要用的接口

<script>
import { userDele, userList } from '../api/index'
export default {

5.这样就完成了对接口的二次封装,这样做可以让我们换根地址更方便,假如axios不再进行维护,我们也可以换掉axios,这只是最简单的二次封装。

Vue2封装Axios接口请求的二次封装可以让我们在项目中更加方便地使用Axios进行数据请求,同时也可以提高代码的可维护性和复用性。下面是一个简单的Vue2封装Axios接口请求的示例: 1. 安装Axios 在项目中安装Axios,可以使用npm或者yarn进行安装: ```bash npm install axios --save ``` 或者 ```bash yarn add axios ``` 2. 封装Axios 在src目录下新建一个api文件夹,用于存放Axios封装代码。在api目录下新建一个request.js文件,用于封装Axios的请求方法。 ```javascript import axios from 'axios' // 创建实例 const service = axios.create({ baseURL: process.env.BASE_URL, // 接口的基础路径 timeout: 5000 // 请求超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { // 在请求发送之前做一些处理,比如添加token等 return config }, error => { // 请求错误时做些事 return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { // 对响应数据做一些处理,比如说判断返回的状态码是否正确等 return response.data }, error => { // 响应错误时做些事 return Promise.reject(error) } ) export default service ``` 在上面的代码中,我们使用了Axios的interceptors来拦截请求和响应,并做一些处理。比如说,在请求拦截器中,我们可以在发送请求之前添加token等信息;在响应拦截器中,我们可以对返回的数据进行处理,判断响应状态码是否正确等。 3. 封装API请求 在api目录下新建一个index.js文件,用于封装API请求的方法。我们可以根据实际的业务需求,封装不同的请求方法。 ```javascript import request from './request' export function getUsers () { return request({ url: '/users', method: 'get' }) } export function getUserById (id) { return request({ url: `/users/${id}`, method: 'get' }) } export function createUser (data) { return request({ url: '/users', method: 'post', data }) } // 其他API请求方法... ``` 在上面的代码中,我们使用了封装的request方法来发送请求,同时根据业务需求,定义了不同的请求方法,比如获取用户列表、根据ID获取用户信息、创建用户等。 4. 使用API请求 在Vue组件中使用API请求非常简单,只需要在组件中引入封装的API请求,然后调用对应的方法即可。 ```javascript import { getUsers } from '@/api' export default { mounted () { this.getUsers() }, methods: { async getUsers () { const { data } = await getUsers() console.log(data) } } } ``` 在上面的代码中,我们在组件中引入了封装的getUsers方法,并在mounted钩子函数中调用该方法来获取用户列表,并将返回的数据打印到控制台上。 这样,我们就完成了Vue2封装Axios接口请求的二次封装。通过对Axios进行二次封装,我们可以更加方便地使用Axios进行数据请求,并且也可以提高代码的可维护性和复用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值