小程序发起请求和上传图片的封装

发起请求的封装

  在进行页面交互过程中,需要多次与服务器进行数据的交换,所以对发起请求的封装就显得尤为重要。

  在小程序项目中新增一个utils/api.js文件

  代码如下:

  1  // 服务器的基础域名
  2 var baseAPI = ‘http://192.168.1.36:8080/hires/‘;
  3  //上传图片服务器的基础域名
  4 var imgAPI = ‘http://192.168.1.36:8080/hires/‘;
  5
  6 const _extend = (target, options) => {
  7   if (typeof target !== ‘object‘ || typeof options !== ‘object‘) {
  8     return;
  9   }
 10   let name;
 11   for (name in options) {
 12     if (options.hasOwnProperty(name) && !target.hasOwnProperty(name)) {
 13       target[name] = options[name];
 14     }
 15   }
 16   return target;
 17 };
 18 const jyAjax = obj => {
 19   let data = obj.data || {};
 20   data = _extend(data, {
 21     unitId: ‘100001‘,
 22     timeStamp: new Date().getTime(),
 23     // token: wx.getStorageSync(‘token‘) || ‘‘,
 24     token:‘123456‘
 25   });
 26  27   for (const key in data) {
 28     if (data.hasOwnProperty(key) && data[key] == ‘undefined‘ || data[key] == undefined) {
 29       console.log(‘传递参数undefined,key值为:‘ + key + ‘,接口地址为:‘ + obj.url);
 30       console.log(‘页面为:‘ + getCurrentPages()[getCurrentPages().length - 1].route);
 31     }
 32   }
 33   if (obj.isShowLoading !== false) {
 34     obj.isShowLoading = true;
 35   }
 36   if (obj.isShowLoading) {
 37     wx.showLoading({
 38       title: ‘加载中..‘,
 39     });
 40   };
 41   wx.request({
 42     url: baseAPI + obj.url,
 43     method: ‘POST‘,
 44     header: {
 45       ‘Content-Type‘: ‘application/x-www-form-urlencoded;charset=utf-8;‘ // 默认值
 46     },
 47     data: data,
 48     success: (res) => {
 49  50       if (res.data.code == -2) {
 51         let nowWebview = getCurrentPages()[getCurrentPages().length - 1];
 52         let nowWebviewUrl = nowWebview.route;
 53         let nowWebviewOptions = nowWebview.options;
 54         let fullUrl = nowWebviewUrl + ‘?‘;
 55         for (const key in nowWebviewOptions) {
 56           if (nowWebviewOptions.hasOwnProperty(key)) {
 57             fullUrl = fullUrl + key + ‘=‘ + nowWebviewOptions[key] + ‘&‘;
 58           }
 59         };
 60         fullUrl = ‘/‘ + fullUrl.substring(0, fullUrl.length - 1);
 61         wx.setStorageSync(‘beforeLoginPage‘, fullUrl);
 62       } else if (res.data.code == -9) {
 63         wx.showModal({
 64           title: ‘提示‘,
 65           content: ‘服务器繁忙,请稍后再试‘,
 66           showCancel: false
 67         })
 68       }else {
 69         if (typeof obj.success == ‘function‘) { obj.success(res.data); }
 70       }
 71     },
 72     fail: (res) => {
 73       if (typeof obj.error == ‘function‘) { obj.error(res.data); }
 74     },
 75     complete: (res) => {
 76       if (obj.isShowLoading) {
 77         wx.hideLoading();
 78       };
 79       if (typeof obj.complete == ‘function‘) { obj.complete(res.data); }
 80     }
 81   })
 82 };

上传图片的封装

  在上面的api.js文件新增代码:

 1 const imgUpload = obj => {
 2   let imgUrl = obj.imgUrl;
 3
 4   let url = baseAPI + "doFileUpload?token=123456";
 5   wx.uploadFile({
 6     url: url,
 7     filePath: imgUrl,
 8     name: ‘file‘,
 9     success: function (res) {
10       if (typeof obj.success == ‘function‘) { obj.success(res); }
11     },
12     complete: function (res) {
13       console.log(res);
14     }
15   })
16 }

暴露接口

  在最后暴露接口给需要引用的文件

1 //暴露模块接口
2 module.exports = { jyAjax: jyAjax, imgUpload: imgUpload, baseAPI: baseAPI, imgAPI: imgAPI };

设置为全局变量

  在app.js把暴露的接口放在全局变量中,可以被所有文件引用。

let jyAjax = require(‘utils/api.js‘);
//app.js
App({
  jyAjax: jyAjax.jyAjax,
  imgUpload: jyAjax.imgUpload,
})

应用  

  引用例子:

//获取应用实例
const app = getApp();
Page({
  data: {

  },
  onLoad: function () {
    app.jyAjax({
      url:‘app/mine/home/appHome.py‘,
      success:(res)=>{

      }
    })
  },
})

原文地址:https://www.cnblogs.com/wxw1314/p/8385657.html

时间: 2024-09-30 06:26:30

小程序发起请求和上传图片的封装的相关文章

微信应用号小程序发起请求wx.request(OBJECT)

微信应用号小程序发起请求wx.request(OBJECT) wx.request(OBJECT) ? wx.request发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. OBJECT参数说明: 参数名 类型 必填 说明 url String 是 开发者服务器接口地址 data Object.String 否 请求的参数 header Object 否 设置请求的header , header中不能设置Referer method String 否 默认为GET,有效值:O

微信小程序 网络请求之re.request 和那些坑

微信小程序有四种网络请求类型,下面只详细介绍普通HTTPS请求(wx.request) 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 首先,先确认是否设置了合法域名,或者在开发环境下不校验合法域名.关于设置合法域名请看→微信小程序 网络请求之设置合法域名   以下是wx.request的详细说明,截图于微信小程序开发文档 在微信index.js 发起一个普

微信小程序数据请求方法wx.request小测试

微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </view> <button bindtap="RequestData" value="Button">Button</button> 主要是一个按钮,点击后将请求的数据写入到textarea中 js文件: Page({ data:{ textd

小程序接口请求成功,得不到请求数据

小程序接口请求成功但是请求不到数据,解决办法:在wx.request({})的header中添加 'content-type': 'application/x-www-form-urlencoded', 主要代码如下: header: { 'content-type': 'application/x-www-form-urlencoded',//解决请求不到数据 'cookie': wx.getStorageSync("sessionid")//读取sessionid,当作cookie

小程序api请求层封装(Loading全局配置)

前言 小程序开发,没有vue中的axios那么好使,请求层的封装需要自己来搞. 当然请求层的配置少不了loading,这里索性也就将loading做一个配置,避免以后重复造轮子 请求封装 小程序中有封装好的请求方法:wx.request(url,method,header,success,fail,complete);方法类似于原生的ajax, 这里我们大的方面分两种,一种普通请求,一种是文件上传 普通请求又分为get请求,post请求,post请求又分为JSON格式和BODY格式因此 我们需要

微信小程序 request请求封装

在utils文件夹新建文件utils.js,封装代码如下: 小程序升级后内部不自带Promise方法,需外部引入Promise方法   var sendRequest = function (url, method, data = {}, header = {} )     {     var promise = new Promise(function (resolve, reject){         wx.request({           url: url,           d

封装小程序网络请求

/* 1.对小程序wx.require的封装 */ class Ajax{ constructor(dev=true){ this.base = dev ? 'https://生产环境' : 'https://开发环境'; this.token = ""; this.sv = "1.0.0"; } // 参数处理 handleData(data){ data.token = this.token; if(this.sv){ data.sv = this.sv; }

第三篇、微信小程序-网络请求API

wx.request(OBJECT)发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. OBJECT参数说明: 效果图: net.js Page({ data:{ result:{}, }, onLoad:function(options){ this.getDate('http://baobab.wandoujia.com/api/v2/feed?num=2'); }, /** * 网络请求的函数:接收一个URL参数 */ getDate:function(URL){ var

微信小程序request(promise)方法封装

var Promise = require('es6-promise'); var app = getApp(); function wxPromisify(fn) { return function (obj = {}) { return new Promise((resolve, reject) => { obj.success = function (res) { //成功 resolve(res) } obj.fail = function (res) { //失败 reject(res