uniapp 请求后端的封装
// 请求后端的封装
// 请求的后端url前缀,形如:http://ip:port/,一般会在名为config.js中配置
const BACKENDURL = 'http://192.168.190.171:8888/';
// 类型
const TYPE_JSON = "application/json";
const TYPE_FORM = "application/x-www-form-urlencoded";
// 方式
const METHOD_GET = "get";
const METHOD_POST = "post";
// url封装
function urlWrapper(url){
return BACKENDURL + url;
}
// 请求参数封装
function dataWrapper(data){
return data;
}
// 请求头封装
function headerWrapper(header){
return header;
}
// 成功后的处理
function successWrapper(resolve, reject, res){
if(res.statusCode == '200'){
resolve(res.data);
}else{
// 后端成功返回,但是状态码不是200,
showMsg("请求失败,请重试");
}
}
// 提示信息
function showMsg(title = "未知错误,请重试"){
uni.showToast({
title, icon: 'none'
})
}
// 基础的请求方法,默认是application/json,返回一个Promise对象
function baseRequest(url, data, method, header){
// dataType: json 会对返回数据做一次JSON.parse
const promise = new Promise((resolve, reject) => {
uni.request({
url: urlWrapper(url), data: dataWrapper(data), method: method, header: headerWrapper(header), dataType: "json",
success: (res) => {
// 后端成功返回数据,但不表示http状态码是200
successWrapper(resolve, reject, res);
},
fail: (err) => {
// 未请求到后端,或其他错误
showMsg();
}
})
});
return promise;
}
/*
使用方式,在其他js文件中,import api from '../requestBackEnd.js',注意文件路径
在页面调用:api.postJson("test/save", param);
*/
// 对外提供的方法
export default {
// get请求的json
getJson(url, data){
return baseRequest(url, data, METHOD_GET, {"Content-Type": TYPE_JSON});
},
// post请求的json
postJson(url, data){
return baseRequest(url, data, METHOD_POST, {"Content-Type": TYPE_JSON});
},
// get请求的form
getForm(url, data){
return baseRequest(url, data, METHOD_GET, {"Content-Type": TYPE_FORM});
},
// post请求的from
postForm(url, data){
return baseRequest(url, data, METHOD_POST, {"Content-Type": TYPE_FORM});
},
// 可自定义的请求
request(url, data, method, header){
return baseRequest(url, data, method, header);
}
}