[web 前端] 封装简单的axios库

时间:2023-03-09 06:55:08
[web 前端]   封装简单的axios库

转载自https://blog.csdn.net/qq_35844177/article/details/78809499

1.新建http.js文件,封装axios get post 方法

import axios from 'axios'
import qs from 'qs'
import 'es6-promise' axios.defaults.baseURL = '/api'; export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
} export function post(url, data) {
return new Promise((resolve, reject) => {
axios.post(url, qs.stringify(data), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
}
).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}

2.新建api.js文件,封装调用的接口

import {get, post} from './http'

export function getNewPublish() {
const result = get('/ad/newestPublishAdMaterialInfo1');
return result;
}

3.在组件中使用

import {getNewPublish} from '../../api/api'

let result = getNewPublish();

result.then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})

4.加拦截器的封装

import axios from 'axios'
import qs from 'qs'
import {Toast} from 'antd-mobile' axios.defaults.baseURL = '/api'; // 拦截请求
axios.interceptors.request.use(function (config) {
Toast.loading('加载中', 0);
return config
}); // 拦截相应
axios.interceptors.response.use(function (config) {
Toast.hide();
return config
}); export default class Http {
static get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
} static post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, qs.stringify(params), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
}
).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
}