基于Promise封装微信请求

218 阅读1分钟

微信小程序的请求接口

1.RequestTask wx.request(Object object)

wx.request不支持以promise调用,所以想要用poromise得自己封装调用。

微信小程序的请求api官方范文

wx.request({
  url: 'example.php', //仅为示例,并非真实的接口地址
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默认值
  },
  success (res) {
    console.log(res.data)
  }
})

2.用promise封装微信请求

let dev = null; //开发环境的域名
let online = null;//上线后的域名
//创建一个常量用来接收Promise url:请求路径,options:传入的参数jie'h
const request=(url,options)=>{
    //返回一个pormise结果
        return new Promise((resolve,reject)=>{
            //调用wx.request请求
            wx.request({
              url: `${dev+url}`,//请求路径
              method:`${options.method}`,//请求方式
                //判断参数是否需要转型
              data: options.method === 'GET' ? options.data: JSON.stringify(options.data),
              header: {//请求头
                'content-type': 'application/json' // 默认值
              },
            success(res){//接口调用成功的回调函数
                //   console.log(res);
                  if(res.data.code === 200){//判断后端接口的状态码
                      resolve(res.data);//返回一个解析过的promise对象
                  }else{
                      reject(res.data)//返回一个带有拒绝原因的promise对象
                  }
               },
               fail(error){//接口调用失败的回调函数
                   reject(error.data);
               }
            })
        })
    }
//get请求
const get= (url, options = {})=>{
    return request(url,{method:'GET' , data:options})
}
//post请求
const post= (url, options = {})=>{
    return request(url,{method:'POST' , data:options})
}
//put请求
const put= (url, options = {})=>{
    return request(url,{method:'PUT' , data:options})
}
//DELETE请求
const remove= (url, options = {})=>{
    return request(url,{method:'DELETE' , data:options})
}
​
//把方法暴露出去
module.exports = {
    get,
    post,
    put,
    remove
}

\