一、 Axios简介
1、 Axios是什么?
Axios是一个基于promise的HTTP库,类似于jQuery的ajax,用于http请求。可以应用于浏览器端和node.js,既可以用于客户端,也可以用于node.js编写的服务端。
2.、Axios特性
- 支持PromiseAPI
- 拦截请求与响应,比如:在请求前添加授权和响应前做一些事情。
- 转换请求数据和响应数据,比如:进行请求加密或者响应数据加密。
- 取消请求
- 自动转换JSON数据
- 客户端支持防御XSRF
二、安装使用
1、axios组件下载
npm install axios
2、引入axios
// 引入axios
import axios from 'axios';
3、Axios常用得请求方法
- get:一般用户获取数据
- post:一般用于表单提交与文件上传
- patch:更新数据(只将修改得数据推送到后端)
- put:更新数据(所有数据推送到服务器)
- delete:删除数据
备注:post一般用于新建数据,put一般用于更新数据,patch一般用于数据量较大的时候的数据更新。
4、Axios使用
封装起来,创建一个文件夹,如图:
request.js代码如下:
// 引入axios
import axios from 'axios';
// 创建axios实例
const httpService = axios.create({
// 请求超时时间
timeout: 3000 // 需自定义
});
// request拦截器
httpService.interceptors.request.use(
config => {
console.log(config.url);
return config;
},
error => {
// 请求错误处理
Promise.reject(error);
}
)
// respone拦截器
httpService.interceptors.response.use(
response => {
return response.data;
},
// 处理处理
error => {
if (error && error.response) {
switch (error.response.status) {
case 400:
error.message = '错误请求';
break;
case 401:
error.message = '未授权,请重新登录';
break;
case 403:
error.message = '拒绝访问';
break;
case 404:
error.message = '请求错误,未找到该资源';
break;
case 405:
error.message = '请求方法未允许';
break;
case 408:
error.message = '请求超时';
break;
case 500:
error.message = '服务器端出错';
break;
case 501:
error.message = '网络未实现';
break;
case 502:
error.message = '网络错误';
break;
case 503:
error.message = '服务不可用';
break;
case 504:
error.message = '网络超时';
break;
case 505:
error.message = 'http版本不支持该请求';
break;
default:
error.message = `未知错误${error.response.status}`;
}
} else {
error.message = "连接到服务器失败";
}
return Promise.reject(error);
}
)
/*网络请求部分*/
/*
* get请求
* url:请求地址
* params:参数
* */
export function get(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'get',
params: params
// query:params
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
/*
* post请求
* url:请求地址
* params:参数
* */
export function post(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'post',
data: params,
// params:params
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
/*
* put请求
* url:请求地址
* params:参数
* */
export function put(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'put',
data: params,
// params:params
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
/*
* put请求
* url:请求地址
* params:参数
* */
export function putOne(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'put',
// data: params,
params: params
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
export function del(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'delete',
data: params,//post请求用data
// params:params
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
/*
* 文件上传
* url:请求地址
* params:参数
* */
export function fileUpload(url, params = {}) {
return new Promise((resolve, reject) => {
httpService({
url: url,
method: 'post',
data: params,
headers: { 'Content-Type': 'multipart/form-data' }
}).then(response => {
resolve(response);
}).catch(error => {
reject(error);
});
});
}
export default {
get,
post,
fileUpload,
del,
put,
putOne
}
页面需要请求时:
import request from "@/api/request";
request.get('url',{userId:this.loginUser.id}).then(res=>{
console.log(res);
})