评论

在小程序中请求网络API接口并进行封装

网络请求封装及使用简介。

我们在小程序中,经常会和网络API打交道,微信平台提供了request网络接口,和上传下载接口。

我们可以将网络请求进行封装,方便我们和后端API进行交互。

1,创建一个request.js文件,输入如下内容:

const http = ({

    url = "",

    param = {},

    ...other

} = {}) => {

    // wx.showLoading({

    //   title: "网络请求中..",

    // });

    let timeStart = Date.now();

    let cookie = wx.getStorageSync("sessionKey");

    return new Promise((resolve, reject) => {

        wx.request({

            url: url,

            data: param,

            header: {

                "content-type""application/json"// 默认值

                Cookie: cookie,

            },

            ...other,

            timeout3000,

            complete(res) => {

                // wx.hideLoading();

                console.log(`耗时${Date.now() - timeStart}`);

                if (res.statusCode >= 200 && res.statusCode < 300) {

                    resolve(res);

                } else {

                    reject(res);

                }

            },

        });

    });

};


我们封装了wx.request接口,并使用了Prosimse用法,在请求中,我们设置网络超时时间,这里设置的3000毫秒,即3秒时间。并在请求头中设置了cookie,和content-type,使用JSON格式提交数据。

2,定义get请求,get请求一般用来获取数据。

// get方法
function httpGet(url, param = {}) {
    return http({
        url: getUrl(url),
        param,
    });
}


3,定义post请求,post请求一般用于提交数据。

function httpPost(url, param = {}) {
    return http({
        url: getUrl(url),
        param,
        method"post",
    });
}


上面是网络请求的封装,一般位于公共文件夹中。下面就是我们使用这些封装的网络请求,去获取业务API接口的数据了。

4,这里以获取IP做演示,注意,我们需要处理网络请求的各种异常情况。catch()最好加上,并进行处理,我实际碰到的情况,就是打开小程序,一直显示加载中,不结束,后经排查,是网络的问题,而因为我没有进行处理catch,导致一直转圈圈。

doQueryIP: function () {
        const that = this;
        wx.showLoading({
            title'加载中...',
            masktrue,
        })
        ohttp.httpGet('/pubip').then((res) => {
            if (res.data.code == 1) {
                const rdata = res.data.data;
                const ip = rdata.trim().split(" ")[0];
                that.setData({
                    rdata: rdata,
                    ip:ip,
                })
                wx.hideLoading({
                    success(res) => { },
                })
                wx.showToast({
                    title'查询成功',
                })
            } else {
                wx.hideLoading({
                    success(res) => { },
                })
                wx.showToast({
                    title'请稍后再试',
                })
            }
        }).catch((err)=>{
            console.log(err);
            wx.hideLoading({
                success(res) => { },
            })
        })
    },
最后一次编辑于  02-25  
点赞 0
收藏
评论
登录 后发表内容