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

一般我们习惯将请求接口的方法统一起来,变成公共方法

但是在小程序中,似乎遇到了一些问题,官方给的示例是:

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 () {
  }
})

示例代码

https://github.com/zLulus/NotePractice/tree/dev3/MiniProgramDemo

原文地址:https://www.cnblogs.com/Lulus/p/8945352.html

时间: 2024-11-09 16:13:44

小程序开发——统一请求方法的相关文章

微信小程序开发:http请求

在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 这里以介绍wx.request,wx.uploadFile,wx.dowloadFile三种网络请求为主 设置域名 要微信小程序进行网络通信,必须先设置域名,不然会出现错误: URL 域名不合法,请在 mp 后台配置后重试

小程序 开发阶段请求网络报 不在以下 request 合法域名列表中

1.在工具栏右边,点开详情, 把图片最后一项选上,再重新编译一下项目就可以了. 2.管理员将需要使用的域名添加到小程序后台 1. 地址:http://mp.weixin.qq.com (需要请求的域名) 2. 将要请求的域名设置为请求合法域名 注:request 合法域名可以填写多个,如果已经有其它的合域名了,新增一个就行了 注:request安全域名保存并提交后,微信会有一段时间的缓存,大概10多分钟后,request合法域名生效   原文地址:https://www.cnblogs.com/

微信小程序开发《三》:微信小程序请求不能使用session的原因及解决办法

本人在前面的微信小程序开发<二>中提到要想在服务端保持状态需要在客户端第一次请求服务器的时候给客户端返回一个sessionid,由客户端在本地保存,下次请求的时候在header里面带上这个sessionid,写到cookie字段里.但是最近发现请求时哪怕每次在header里带上sessionid还是不能拿到同一个session,百度后终于发现坑了(也不知道微信为啥要这么做),原来微信对wx.request这个API做了修改,小程序发起的请求并不是直接请求我们的后台服务器,而是先通过微信的服务器

微信小程序开发——点击按钮获取用户授权没反应或反应很慢的解决方法

异常描述: 点击按钮获取用户手机号码,有的时候会出现点击无反应或很久之后才弹出用户授权获取手机号码的弹窗,这种情况下,也会出现点击穿透的问题(详见:微信小程序开发——连续快速点击按钮调用小程序api返回后仍然自动重新调用的异常处理) 异常解析: 1. getPhoneNumber的使用: 对于 getPhoneNumber(OBJECT) API,由于小程序需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 <button> 组件的点击来触发(具体使用方法详见getP

小程序开发之插件功能的有效实现方法

我们在做小程序开发时,比如说在编辑器里里面编辑了一段内容,输出网页版只需要htmlspecialchars_decode()函数就可以搞定了,但是输出小程序就并不是那么简单了,必须要使用wxParse插件才能完成.下面跟大家分享一下导入插件的使用方法:在wxml中引入,代码如下: {{title}} 在wcss中引入,代码如下: @import "/wxParse/wxParse.wxss"; .title{ / border:solid #000 1rpx; / width: 100

小程序开发 组件定义(封装)、组件调用、父子组件方法调用、父子组件传值通讯

在小程序开发中,为了提高代码效率,和代码使用率,我们也用到了组件封装, 今天我介绍下如何在小程序中封装一个头部公用组件 首先,所有父组件(调用页面)的json文件都要引用子组件:index.json { "usingComponents": { "header": "../../component/header/header", } } 一,组件定义(封装) 子组件:header.wxml <view name='header' class

[转]灯灯小程序开发手记:仿今日头条(上)

本文转自:http://www.jianshu.com/p/a1e0b8abb12d 写在前面 新的一年,祝大家新年快乐!当然对于程序员来说,新的一年,也要有新的改变.因此灯灯决定凑热闹编写微信小程序啦! 上一篇文章<记一次小程序开发过程>中,灯灯大致写了下自己第一次开发小程序的感受和流程.这一次灯灯会详细记录下自己制作一个小程序的思路.遇到的问题.涉及到的代码等和大家分享.    视频教程地址:http://study.163.com/course/introduction.htm?cour

小程序开发的40个技术窍门,纯干货!

微信“小程序”正式上线一周时间,相关话题持续升温.支付宝开发“小程序”的消息也随即曝出,互联网巨头们摩拳擦掌,不少网友调侃说,这势头感觉要挑战现有的“APP帝国”了.那么,面对如此炙手可热的小程序,WeX5移动开发云也没有闲着,经过全网搜索,为大家筛选出一条小程序开发者的必读文章,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考! Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,

小程序开发公司

本人目前是小程序开发公司的(蒋经理)1 7 6-8 8 4 1-1 0 2 8.微/电,支持各种行业类型小程序开发. 目前部门的主营项目是一个电商项目,在本人入职之前整个项目系统的主营业务流程已经完备,也已经在正式运营,不过因为各种原因平台主要是在PC端和微信公众号进行运营.小程序其实出来的挺早的,但是优先级对于我们目前的规划来说其实还是很低的.直到17年11月的时候小程序推出了web-view组件,在当时被誉为移动电商的福音. 有了web-view那什么公众号内容.官网.网页有域名的那种直接就