IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序请求库的二次封装 -> 正文阅读

[移动开发]微信小程序请求库的二次封装

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
}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:17:18  更:2022-02-19 01:17:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:39:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码