好久以前写的了,最近朋友问我,传上来一下!
/**
* Created by 23hp on 2018/3/30.
* 基于Promise的网络请求库,包含GET ,postFrom表单,postJson,PUT,DELETE请求
* 使用方法:
* 先引入: import {get,post,...} from 本文件;
* · get请求: get("/index",{id:2}).then(data=>{}).catch(error=>{});
* · post请求: post("/index",{id:2}).then(data=>{}).catch(error=>{});
* Promise详细介绍:
* http://es6.ruanyifeng.com/#docs/promise
*/
/**
* 发起get请求
* @param url 请求路径 必填
* @param data 请求参数 get请求的参数会自动拼到地址后面
* @param headers 请求头 选填
* @returns {Promise}
*/
export const get = (url, data, headers) => request('GET', url, data, headers);
/**
* 发起post 表单提交请求
* @param url 请求路径 必填
* @param data 请求参数
* @param headers 请求头 选填
* @returns {Promise}
*/
export const postFrom = (url, data, headers) => request('POST', url, data, {'Content-Type': 'application/x-www-form-urlencoded','Authorization':wx.getStorageSync('app_token')});
/**
* 发起post json请求
* @param url 请求路径 必填
* @param data 请求参数
* @param headers 请求头 选填
* @returns {Promise}
*/
export const postJson = (url, data, headers) => request('POST', url, data, {'Content-Type': 'application/json','Authorization':wx.getStorageSync('app_token')});
/**
* 发起put请求
* @param url 请求路径 必填
* @param data 请求参数
* @param headers 请求头 选填
* @returns {Promise}
*/
export const put = (url, data, headers) => request('PUT', url, data, headers);
/**
* 发起delete请求
* @param url 请求路径 必填
* @param data 请求参数 delete请求的参数会自动拼到地址后面
* @param headers 请求头 选填
* @returns {Promise}
*/
export const del = (url, data, headers) => request('DELETE', url, data, headers);
/**
* 接口请求基类方法
* @param method 请求方法 必填
* @param url 请求路径 必填
* @param data 请求参数
* @param header 请求头 选填
* @returns {Promise}
*/
// export function request(method, url, data, header = {'Content-Type': 'application/json',"Authorization":"JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJtb2JpbGUiOiIxOTkwMDAwNzc3NyIsImxhc3RMb2dpblRpbWUiOjE1ODY4NDU4MzYyNDJ9.Pd3HgccJZ8rkdb8cYnhx7ByHmF_ThPNvJTP7zUGD1X0"}) {
export function request(method, url, data, header = {'Content-Type': 'application/json','Authorization':wx.getStorageSync('app_token')}) {
console.group('==============>新请求<==============');
console.info(method, url);
if(data) console.info('参数data :',data);
if(header) console.info('参数header :', header);
return new Promise((resolve, reject) => {
const response = {};
wx.request({
url, method, data, header,
success: (res) => response.success = res.data,
fail: (error) => response.fail = error,
complete() {
if (response.success && response.success) {
console.info('请求成功:', response.success,"code",response.success.code);
if (response.success.code == 200){
// resolve(response.success.data)
if (response.success.data == null) {
resolve("成功")
} else {
resolve(response.success.data)
}
} else if (response.success.code == 403) {
wx.reLaunch({
url: '/pages/login/login'
})
reject(response.success.msg);
} else {
console.info('请求失败1:', response.success.msg);
reject(response.success.msg);
}
} else {
console.info('请求失败:', response.fail);
reject(response.fail)
}
console.groupEnd();
},
});
});
}
/**
* 获取微信唯一id openid
* @param {*} code wxlogin之后返回的red.code
*/
export function wxOpenIdRequest(code) {
console.group('==============>WXOpenId请求<==============');
if (code == null || code == "") {
return false
}
return new Promise((resolve, reject) => {
const response = {};
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',//微信服务器获取appid的网址 不用变
method:'POST',//必须是post方法
data:{
js_code:code,
appid:'wx7fb67b8b262222597',//仅为实例appid
secret:'b2e097ade1bec7d1b334c76e7caf703',//仅为实例secret
grant_type:'authorization_code'
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success: (res) => response.success = res.data,
fail: (error) => response.fail = error,
complete() {
if (response.success) {
console.info('微信id请求成功:', response.success,"code",response.success.code);
resolve(response.success);
} else {
console.info('请求失败:', response.fail);
reject(response.fail)
}
console.groupEnd();
},
});
});
}
网友评论