美文网首页
微信小程序:封装网络请求

微信小程序:封装网络请求

作者: 司徒新新 | 来源:发表于2022-11-07 12:27 被阅读0次

好久以前写的了,最近朋友问我,传上来一下!

/**
 * 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();
            },
        });
    });
}

相关文章

网友评论

      本文标题:微信小程序:封装网络请求

      本文链接:https://www.haomeiwen.com/subject/pzmbtdtx.html