-.- -.-
首页
  • 分类
  • 标签
  • 归档
  • Lodash 源码分析 (opens new window)
Mozilla (opens new window)
GitHub (opens new window)

江月何年初照人

首页
  • 分类
  • 标签
  • 归档
  • Lodash 源码分析 (opens new window)
Mozilla (opens new window)
GitHub (opens new window)
  • 小程序请求封装
    • 封装请求
    • 方法的封装
  • wechat
江月何年初照人
2021-03-25

小程序请求封装

# 小程序请求封装

# 封装请求

和 vue 中封装 axios 类似的操作,只不过对于 参数的处理比较特殊,没有 axios 那么方便

在请求前可以添加一些参数的处理,比如添加 token , session 等

也可以在 js 文件中引入弹框等,做报错的拦截处理

// request.js
const request = options => {

  return new Promise((resolve, reject) => {
      const { isFD, header = {} } = options

      delete options.header
      isFD && (options.data = handlerParams(options.data))
      wx.request({
        header: Object.assign({ 'Content-Type': !isFD ? 'application/json' : 'application/x-www-form-urlencoded;charset=utf-8' }, header),
        ...options,
        success: (res) => {
          resolve(data)
        },
        fail: (error) => {
          reject(error)
        }
      })
    })
  }

const handlerParams = (obj = {}) => {
  const [first,...array] = Object.keys(obj)
  const firstParams = array.length && `${first}=${obj[first]}`
  return array.reduce((result, k, i) => (result+=`&${k}=${obj[k]}`, result), firstParams || '')
}

export default request
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

# 方法的封装

封装了 两种请求方式,post 分为了 formdata 和 json

import request from "./request";

// 使用箭头函数 this 指向会有问题, 这里需要判断 arguments 
function post (url, data, header, isFD = false) {
  const length = arguments.length
  if (length <= 3 && typeof arguments[length-1] === 'boolean') {
    isFD = arguments[2]
  }
  return request({
    method: 'POST',
    url,
    data,
    header,
    isFD
  })
}

const postFormData = (...args) => {
  return post(...args, true)
}

const get = (url, data, header) => {
  return request({
    method: 'GET',
    url,
    data,
    header
  })
}

export default {
  post,
  postFormData,
  get
}
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
编辑 (opens new window)
上次更新: 2021/03/25 18:52:49
最近更新
01
a标签下载限制
08-08
02
必应每日一图
05-27
03
小球碰壁反弹动画
05-26
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Himawari | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式