美文网首页
request请求封装

request请求封装

作者: kacen | 来源:发表于2020-10-12 18:29 被阅读0次

不管是在小程序还是咋们的java编程中,往往为了提高代码的高复用性,我们都会对经常重复使用到的代码块进行一定的封装,进而加快开发,当然有时候还可以降低对内存的使用(抑或者说降低对服务器的负载)。今天我将之前在小程序用到的request封装的代码留给各位老铁参考使用哈,喜欢可以关注我哈,没错我就是会一些前端的后端程序员,Kacen!

废话不多说,直接干起儿!
1.首先我们在根目录下,新建一个request文件夹,专门放一些用来做请求使用的js,图片是事例: meishenme.png
2.我们新建一个allrequest.js文件来把你想封装的代码放进去(这里我写的是get,post,put,delete)
class request{
  constructor(){
    this._header = {}
  }
  
  // 统一异常处理
  setErrorHandler(handler){
    this._errorHandler = handler;
  }

  // GET请求处理
  getRequest(url, data, header = this._header){
    return this.requestAll(url, data, header, 'GET')
  }

  // POST请求处理
  postRequest(url, data, header = this._header){
    return this.requestAll(url, data, header, 'POST')
  }

  // PUT请求处理
  putRequest(url, data, header = this._header){
    return this.requestAll(url, data, header, 'PUT')
  }

  // DELETE请求处理
  deleteRequest(url, data, header = this._header){
    return this.requestAll(url, data, header, 'DELETE')
  }

  requestAll(url, data, header, requestMethod){
    return new Promise((resolve, reject) => {
      wx.request({
        url: url,
        data: data,
        header: header,
        method: requestMethod,
        fail: (res) => {
          //这里是将错误的信息统一处理,因为我们会写一个统一处理错误的代码,我们可以在每个不同的js下定义不同的错误信息。
          if(this._errorHandler != null){
            this._errorHandler(res)
          }
          reject(res)
        },
        success: (result) => {          
          if (result.statusCode === 200)
          resolve(result)
          else{
            if(this._errorHandler != null){
              this._errorHandler(result)
            }
          }
          reject(result)
        },
      })
    })
  }
}
export default request
3.每个页面不同会有不同的需求,所以我们可以新建一个专门的js来针对你想请求的页面(这里以indexTest为例子)
import request from "./allrequest.js"
import config from "../config.js"

class indexTest{
  constructor() {
    this._baseUrl = config.localAddress+config.wechatIndex.swiper
    this._defaultHeader = {
      "access-token":config.accessToken,
      "version":config.version,
      "user-token":config.userToken,
      'content-type': 'application/json'
    }
    this._request = new request
    this._request.setErrorHandler(this.errorHander)
  }

  /**
   * 统一的异常处理方法
   */
  errorHander(res) {
    console.error(res)
  }

  //获取首页swiper图片
  getSwiperImage(){
    let data = {}
    const path = config.wechatIndex.swiperImages;
    return this._request.postRequest(this._baseUrl+path,data,this._defaultHeader).then(res => res.data)
  }
}
export default indexTest
注意:

如果需要在小程序全局调用,那么我们就需要在app.js下添加两行代码,先引入后初始化,截图给你们看哈

image.png
image.png
4.这里我是以全局调用为主哦,所以是直接app.indexTest.getSwiperImage()
  onLoad: function (options) {
    this.testRequest();
  },
  testRequest(){
    app.indexTest.getSwiperImage()
    .then(res => {      
      if(res.getData != undefined)
      {
        this.setData({
          topSwiperList: res.getData
        })        
      }else{
        console.log("没有图片");
        
      }
    }).catch(res => {
        wx.showToast({
            title: '出错了!',
            icon: 'none'
        })
    })
  }

以上就是对request的封装啦,小伙伴可以直接尝试一下哈,代码都是可以复制粘贴使用的三无产品,无害,无毒,无收费!!

相关文章

网友评论

      本文标题:request请求封装

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