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


    发起请求的封装

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

      在小程序项目中新增一个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)=>{
            
          }
        })
      },
    })
  • 相关阅读:
    剑指offer 找出数组中重复的数字
    SE知识整理——泛型
    Centos7 切换与安装图形界面
    laravel8 elasticsearch 配置搭建使用
    ts运行配置.md
    ts类型保护
    2022年4月工作资料
    Cmake使用
    关于线性筛的研究
    SkyWalking在.NET平台的简单使用
  • 原文地址:https://www.cnblogs.com/wxw1314/p/8385657.html
Copyright © 2020-2023  润新知