• 小程序开发——统一请求方法


    一般我们习惯将请求接口的方法统一起来,变成公共方法
    但是在小程序中,似乎遇到了一些问题,官方给的示例是:

    this.setData({
        name: 'MINA'
    })
    

    this局限了请求的地方,似乎只能在每个业务页面内,setData方法的参数不够配置化
    以下是我参考一些资料之后得到的解决方案

    util.js

    var apiHost = ".....";
    
    //url添加最后的相对路径即可
    function getRequest(url, that, targetName) {
      wx.request({
        url: apiHost + url,
        method: 'GET',
        header: {
          'content-type': 'application/json' // 默认值
        },
        success: function (res) {
          var param = {};
          param[targetName] = res.data;
          that.setData(param);
        },
        fail: function (error) {
          console.log(error);
        }
      })
    }
    
    function postRequest(url, data, that, targetName ) {
      var token='你的令牌';   //比如存储在Storage中
      wx.request({
            url: apiHost + url,
            data: data,
            method: 'POST',
            header: {
                'content-type': 'application/json', // 默认值
                'Authorization': "Bearer " + token
            },
            success: function (res) {
                var param = {};
                param[targetName] = res.data;
                that.setData(param);
            },
            fail: function (error) {
                console.log(error);
            }
        })
    }
    
    module.exports.getRequest = getRequest;
    module.exports.postRequest = postRequest;
    

    调用api

    const util = require('../../utils/util.js')
    
    Page({
      data: {
        logInResult:{},
        sessionKey:"",
      },
      logIn:function(e){
        //登录某系统
        util.postRequest('/Account/LogInForMiniProgram', { "UserName": this.data.userName, "Password": this.data.password }, this, "logInResult");
      },
      wxLogInAndGetSessionKey: function (e) {
        //注意作用域,此处,在wx的方法里面拿到的this不对(http://jsrocks.org/cn/2014/10/arrow-functions-and-their-scope)
        var that = this;
        wx.login({
          success: function (res) {
            console.log(res)
            if (res.code) {
              //调用后端接口获得sessionkey
              util.postRequest('/AccountForMiniProgram/WechatGetSessionKey', { id: res.code }, that, "sessionKey");
            } else {
              console.log('登录失败!' + res.errMsg)
            }
          }
        });
      },
      onLoad: function () {
      }
    })
    

    示例代码

    示例代码

  • 相关阅读:
    Python中的魔法方法【技能突破】
    Python简明教程:面向对象【新手必学】
    No such file or directory
    LaTeX Error: File ''picins.sty'' not Found.
    GCC编译过程中的各种not declared in this scope
    20.有效的括号-力扣
    c++标准库bitset文件
    c++标准库windows.h文件
    warning: control reaches end of non-void function
    c++标准库iostream文件
  • 原文地址:https://www.cnblogs.com/Lulus/p/8945352.html
Copyright © 2020-2023  润新知