• 使用Promise封装小程序wx.request的实现方法


    因为业务需要,每个http请求都要加上一个请求头,所以每次都要写很多重复的代码。

    现在尝试把wx.request简单的封装了一下,调用一个request方法,每次请求自动携带header头信息,这样就省事多了,包含了常见的get post put delete 四种请求方法,支持Promise方式调用。

    封装代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    class request {
     constructor() {
      this._baseUrl = 'https://xxx.com/api';
      this._token = wx.getStorageSync('token');
      this._header = {'Authorization': 'Bearer ' + token}
     }
     
     /**
      * GET类型的网络请求
      */
     getRequest(url, data, header = this._header) {
      return this.requestAll(url, data, header, 'GET')
     }
     
     /**
      * DELETE类型的网络请求
      */
     deleteRequest(url, data, header = this._header) {
      return this.requestAll(url, data, header, 'DELETE')
     }
     
     /**
      * PUT类型的网络请求
      */
     putRequest(url, data, header = this._header) {
      return this.requestAll(url, data, header, 'PUT')
     }
     
     /**
      * POST类型的网络请求
      */
     postRequest(url, data, header = this._header) {
      return this.requestAll(url, data, header, 'POST')
     }
     
     /**
      * 网络请求
      */
     requestAll(url, data, header, method) {
      return new Promise((resolve, reject) => {
       wx.request({
        url: this._baseUrl + url,
        data: data,
        header: header,
        method: method,
        success: (res => {
         if (res.statusCode === 200) {
          //200: 服务端业务处理正常结束
          resolve(res)
         } else {
          //其它错误,提示用户错误信息
          reject(res)
         }
        }),
        fail: (res => {
         reject(res)
        })
       })
      })
     }
    }
     
    export default request

    使用方法

    在app.js中引入:

    1
    2
    3
    4
    5
    6
    import request from './request.js'
    App({
     myRequest(){
      return new request();
     }
    })

    然后在要使用的页面里引入使用即可:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    const app = getApp();//新建页面时 默认引入
    const ajax = app.myRequest();//初始化一个的request() 实例
     
    Page({
     data:{},
     onLoad(){
      this.getData();
     },
     getData(){
      ajax.getRequest('/getList',{id: 1024}).then((res)=>{
       console.log(res);
      }).catch((err)=>{
       console.log(err);
      })
     }
    })

    使用方法也是异常简单

    • 比如Get请求就是:ajax.getRequest(url: String, data: Object);
    • 比如Post请求就是:ajax.postRequest(url: String, data: Object);
    • ...

    参考:

    封装wx.request

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 相关阅读:
    声明函数的是方式
    数组的相关属性和函数
    JS选择结构
    JS数据类型
    JS 运算符
    JS 变量
    响应式布局
    css的flex属性
    CSS中的度量单位
    BFC 规则
  • 原文地址:https://www.cnblogs.com/1549983239yifeng/p/14742962.html
Copyright © 2020-2023  润新知