微信小程序请求库的封装方法

2023-11-18

1.文档地址

微信官方文档:wx.request网络请求

2.项目使用

根目录下新建utils=>request.js,作为请求通用库

//接口地址
const DEV_URL = 'http://localhost:22667'
const PRODUCT_URL = 'http://xx.xx.xx.xx:22667'

//选用的接口地址,这行代码主要是方便URL地址的统一修改
let SERVER_URL = DEV_URL

//wx.request封装
let request = (method, url, data) => {
  return new Promise((resolve, reject) => {
  	//请求之前先定义请求头
    let headers = {}
    headers['Accept'] = 'application/json, text/plain, */*'
	//从storage中获取token,能拿到说明已登录
    wx.getStorage({
      key: 'token'
    }).then(res => {

	  //请求头中带上token
      headers['Authorization'] = res.data

      wx.request({
        url: SERVER_URL + url,
        method: method,
        header: headers,
        data: data,
        success: res => {
          if (res.data.resultCode === 200) {
            resolve(res)
          } else {
            reject(res)
          }
        },
        fail: err => {
          reject('请求失败!')
        }
      })

    }).catch(err => {
	  //因为无token,下面的代码可以跳转到登录页,也可以直接请求
      wx.request({
        url: SERVER_URL + url,
        method: method,
        header: headers,
        data: data,
        success: res => {
          if (res.data.resultCode === 200) {
            resolve(res)
          } else {
            reject(res)
          }
        },
        fail: err => {
          reject('请求失败!')
        }
      })

    })

  })
}

//封装上传文件至特定服务器的接口
let upload = (tempUrl, url) => {
  return new Promise((resolve, reject) => {
    let header = {}
    header['Accept'] = 'application/json, text/plain, */*'
    wx.getStorage({
      key: 'token'
    }).then(res => {
      let token = res.data
      header['Authorization'] = token
      wx.uploadFile({
        filePath: tempUrl,
        name: 'image',
        url: PRODUCT_URL + url,
        header: header,
        success(res) {
          let data = JSON.parse(res.data)
          if(data.resultCode === 200) {
            resolve(data.data)
          } else {
            reject(res.message)
          }
        },
        fail(err) {
          reject(err)
        }
      })
    }).catch(err => {})
  })
}


//对外暴露api,调用request/upload方法,这里的代码也可以单独写到api.js中
const api = {
  login: (data) => request('POST', '/api/v1/user/login', data),
  register: (data) => request('POST', '/api/v1/user/register', data),
  getProfile: () => request('GET', '/api/v1/user/profile'),
  goodsSearch: (data) => request('GET', '/api/v1/goods/search', data),
  getGoodsDetail: (goodsId) => request('GET', '/api/v1/goods/detail/' + goodsId),
  uploadImage: (tempUrl) => upload('POST', tempUrl, '/api/v1/tool/upload'),
  updateProfile: (data) => request('/api/v1/user/profile', data),
  addCart: (data) => request('POST', '/api/v1/shop-cart/shop-cart', data),
  getCart: (paegNumber) => request('GET', '/api/v1/shop-cart/shop-cart/page', paegNumber),
  getDefaultAddress: () => request('GET', '/api/v1/address/address/default'),
  getAddressList: () => request('GET', '/api/v1/address/address'),
  addAddress: (data) => request('POST', '/api/v1/address/address', data),
  settleOrder: (data) => request('POST', '/api/v1/order/saveOrder', data),
  getOrderList: () => request('GET', '/api/v1/order/order')
}

module.exports = {
  api
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序请求库的封装方法 的相关文章

随机推荐

  • Matlab中绘制Bode图与单位阶跃响应图

    假设传递函数方程为 分析k分别为4 1 0 5时bode图和阶跃响应的不同 gt gt w 2 pi 50 gt gt num1 0 5 w 1 0 gt gt den1 1 0 5 w w 2 gt gt num2 1 w 1 0 gt
  • python爬虫——爬取快读小说app

    1 爬取结果 csv文件 出现了有两个表头 不明所以 无关大雅 2 使用fiddler4进行抓包 通过观察url 我们不难发现其中的规律 要实现进行分类抓取 需要更改url第一个数字 如下 https sc canrike com Cate
  • 用16进制的格式查看文件

    od Ax tx1 filename
  • 上传码云_vue-egg 简单的图片上传

    源码已上传码云 小朋友 vue egg 简单的图片上传 知乎视频 www zhihu com VSCode终端不能使用命令 惟愿安好ly 博客园 www cnblogs com 上传用的是 iview design 的 Upload 组件
  • Conda常见命令总结

    以下是常见的conda命令列表 conda create 创建新的虚拟环境 安装指定的包 conda activate 激活虚拟环境 conda deactivate 停用当前虚拟环境 conda list 列出已安装的包 conda se
  • 能连蓝牙键盘吗_300多的小键盘,颜值很能打,GANSS ALT71蓝牙双模机械键盘很香...

    关于键盘配列 你是60 70 80 90 还是100 党 反正上述这些配列差不多我都集齐了 GANSS ALT71正好填补了70 的空缺 这次分享录制了视频 wifi足的可以看这个 更换封面 05 58 视频尚未发布 暂时无法播放 wifi
  • 启动hadoop时候报错:localhost: ssh: Could not resolve hostname localhost: Temporary failure in name resolut...

    这个错误是由于配置文件没有配置好 解决方案如下 1 打开profile文件 vim etc profile 2 在文件最后加入的内容应该如下 高亮的两句一般是大家缺少的 export JAVA HOME usr java jdk expor
  • EasyPoi导入Excel中的图片,空指针异常

    官方文档 1 1 介绍 Powered by MinDoc 导入easypoi依赖 版本可以选择最新的
  • element table显示滚动条

    1 tableX为要显示滚动条的类名 2 显示横向滚动条 3 tableX el table scrollable x el table body wrapper 4 padding 0 0 5px 0 5 margin 0 0 5px 0
  • 【最新】手把手教你在VMware中安装Ubuntu虚拟机

    手把手教你在Vmware中安装Ubuntu虚拟机 一 下载VMware和Ubuntu系统官方镜像 1 下载VMware 2 下载Ubuntu系统官方镜像 二 安装VMware和Ubuntu虚拟机 1 安装VMware 2 安装Ubuntu镜
  • 电源学习总结(二)——线性稳压主要特点及原理

    文章目录 主要特点 内部结构 常见的三端线性稳压 AMS1117 主要特点 线性稳压最为突出的优点主要有成本低 噪声低 体积小 由于线性稳压结构简单 生产相对容易 因此其生产成本可以很低 同时其需要的外围器件也很少 一般只需要在输入端和输出
  • 【Python】教你写一个一键上传git的脚本(打包成exe)

    本篇博客来教你用Python写一个简单的git自动上传脚本 前言 为什么需要一个这样的东西 有的时候 我的学习代码其实没啥好commit的 写一个自动上传的脚本 就可以自动执行完所有的命令 而不需要自己手动进行git三板斧操作 项目代码已开
  • unplugin-vue-components 源码原理分析

    unplugin vue components 是一款按需自动导入Vue组件的库 支持 Vue2 和 Vue3 同时支持组件和指令 使用此插件库后 不再需要手动导入组件 插件会自动识别按需导入组件以及对应样式 我们只需要像全局组件那样使用即
  • 【笔记】SemGCN

    一 论文总结 1 1 核心贡献 提出了一种改进的图卷积操作 称为语义图卷积 SemGConv 它源自cnn 其关键思想是学习图中暗示的边的信道权值 然后将它们与核矩阵结合起来 这大大提高了图卷积的能力 其次 我们引入了SemGCN 其中Se
  • Unity PlayerPrefs(数据持久化)

    PlayerPrefs Unity3D中的数据持久化是以键值的形式存储的 可以看作是一个字典 Unity3D中值是通过键名来读取的 当值不存在时 返回默认值 目前Unity3D中只支持int string float三种数据类型的读取 参考
  • android开发工具!Android性能优化常见问题,灵魂拷问

    前言 今年上半年其实就已经有了换工作的想法 奈何疫情原因和岗位缩减 加之信心不足 到六月底投递了百度的Android岗位 本以为像我这种非211 985没工作经验的渣渣只能被直接pass 结果却意外的收到了电话 真是受宠若惊 经过电面 技术
  • 51单片机入学第八课——8*8点阵屏

    文章目录 LED点阵屏 点阵屏电路图 74HC595芯片 串入并出 使用方法 编程 点亮一个点 显示汉字 PCtoLCD 2002 编写代码 总结 LED点阵屏 LED点阵屏和数码管工作都是是靠二极管发光 但工作原理与矩阵键盘有些类似 在后
  • springboot2.0整合logback日志(详细)

    一 近期自己的项目想要一个记录日志的功能 而springboot本身就内置了日志功能 然而想要输入想要的日志 并且输出到磁盘 然后按天归档 或者日志的切分什么的 自带的日志仅仅具有简单的功能 百度了一番 总结如下 适合大多数的应用场景 二
  • python线程池ThreadPoolExecutor使用

    假设我们必须多线程任务创建大量线程 由于线程太多 因此可能会有很多性能问题 这在计算上会是最昂贵的 一个主要问题可能是吞吐量受限 我们可以通过创建一个线程池来解决这个问题 一个线程池可以被定义为一组预先实例化和空闲的线程 它们随时可以开始工
  • 微信小程序请求库的封装方法

    1 文档地址 微信官方文档 wx request网络请求 2 项目使用 根目录下新建utils gt request js 作为请求通用库 接口地址 const DEV URL http localhost 22667 const PROD