了解luch-request:
Luch-Request 是一个用于发送 HTTP 请求的小程序框架。
Luch-Request 的一些特点和功能:
-
简单易用:Luch-Request 提供了简洁的 API 接口,使发送请求变得非常容易,开发者只需要关注业务逻辑,而不需要过多关心底层网络请求的细节。
-
拦截器:Luch-Request 支持拦截器机制,可以在请求发送之前或响应返回之后对请求进行拦截处理,例如添加请求头、修改请求参数、处理错误等操作。
-
请求和响应的拦截处理:Luch-Request 允许在请求和响应到达时进行拦截处理,可以修改请求参数、处理响应数据、统一处理错误等。
-
取消请求:Luch-Request 支持取消请求的功能,可以在请求发送过程中随时取消未完成的请求,避免不必要的网络请求和资源浪费。
-
请求缓存:Luch-Request 可以配置请求缓存,提高重复请求的效率,减少服务器压力。
-
文件上传和下载:Luch-Request 支持文件上传和下载的功能,可以方便地处理文件上传和下载的需求。
封装代码
import Request from 'luch-request';
//创建请求实例方法
function createRequest(options = {}) {
return new Request({
...options
});
}
//基地址
const baseURL: string = 'http://localhost:3000';
//创建http实例对象
const http = createRequest({
baseURL
});
//请求
http.interceptors.request.use(
(config) => {
// 可以在请求的时候固定设置content-type以及token等信息内容
config.header = {
'content-type': 'application/json',
token: uni.getStorageSync('token') || ''
};
return config;
},
(config) => {
// 可使用async await做异步
return Promise.reject(config);
}
);
//请求拦截
http.interceptors.response.use(
(response) => {
console.log(response.data);
if (response.data.code === 200) {
return response.data.data;
}
},
//错误处理
(error) => {
// 利用http状态码可以实现不同情况接口错误内容的收集与反馈操作
if (error && error.errMsg) {
// 判断http请求的状态码,并设置不同的错误提示信息
switch (error.statusCode) {
case 400:
error.errMsg = '错误请求';
break;
case 401:
error.errMsg = '未授权,请重新登录';
break;
case 403:
error.errMsg = '拒绝访问';
break;
case 404:
error.errMsg = '请求错误,未找到该资源';
break;
case 405:
error.errMsg = '请求方法未允许';
break;
case 408:
error.errMsg = '请求超时';
break;
case 500:
error.errMsg = '服务器端出错';
break;
case 501:
error.errMsg = '网络未实现';
break;
case 502:
error.errMsg = '网络错误';
break;
case 503:
error.errMsg = '服务不可用';
break;
case 504:
error.errMsg = '网络超时';
break;
case 505:
error.errMsg = 'http版本不支持该请求';
break;
default:
error.errMsg = '连接错误';
}
const errorData = {
code: error.statusCode,
message: error.errMsg
};
// 统一错误处理可以放这,例如页面提示错误...
console.log('统一错误处理: ', errorData);
}
return Promise.reject(error);
}
);
export default http;