1.0.2 • Published 5 months ago

@allez/weapp-request v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

Weapp Request

参考了 Axios,用于微信小程序发起网络请求。

Axios 官方文档

特性

  • 支持 Promise API
  • 拦截请求和响应
  • 封装 wx.request\wx.uploadFile\wx.downloadFile\wx.connectSocket,一致的语法结构
  • 处理 Task 任务对象
  • release 环境支持请求体的本地打印以及本地日志记录

发起 wx.request 请求(默认为GET请求)

import request from '@allez/weapp-request'

request.request('/user/12345')

request.request({ method: 'post', url: '/user/12345', data: { firstName: 'Fred' } })

使用别名

request.request(config)

request.get(url[, data[, config]])

request.delete(url[, data[, config]])

request.head(url[, data[, config]])

request.options(url[, data[, config]])

request.post(url[, data[, config]])

request.put(url[, data[, config]])

request.patch(url[, data[, config]])

发起 wx.uploadFile 请求

// 传入 name 以及 filePath 参数会自动发起 wx.uploadFile 请求
request({ url: 'www.abc.com', name: 'name', filePath: 'filePath' })

使用别名

request.uploadFile('www.abc.com', 'filePath', 'name', {...config})

request.uploadFile({ url: 'www.abc.com', filePath: 'filePath', name: 'name', ...config })

发起 wx.downloadFile 请求

// 传入 filePath 参数会自动发起 wx.downloadFile 请求(wx.downloadFile中的 filePath 为非必填项,可传入空值)
request({ url: 'www.abc.com', filePath: '' })

使用别名

request.downloadFile('www.abc.com', 'filePath', {...config})

request.downloadFile({ url: 'www.abc.com', filePath: 'filePath', ...config })

发起 wx.connectSocket 请求

request.connectSocket('www.abc.com', {...config})

request.connectSocket({ url: 'www.abc.com', ...config })

拦截请求和响应

request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  console.log('请求被拦截了')
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
})
request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  console.log('响应被拦截了')
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
})

处理 Task 任务对象

wx.request\wx.uploadFile\wx.downloadFile\wx.connectSocket 拥有相同的处理方法。

在 config 内传入合法Task方法的 task 对象。

RequestTask

request.downloadFile({
  url: 'www.abc.com',
  task: {
    // task对象键值命名必须与官方文档Task提供的函数名一致
    onProgressUpdate: (res, task) => {
      // 使用自定义函数接收参数
      yourOnProgressUpdateFun(res, task)
    },
    offProgressUpdate: (res, task) => {
      yourOffProgressUpdateFunc(res, task)
    },
    // 如果不是on监听事件的回调函数,request传入的是task对象
    abort: task => {
      yourAbortFunc(task)
    },
  },
});

function yourAbortFunc(task) {
  if (true) {
    task.abort()
  }
}