• 小程序---调用后端接口的方法


    学习小程序一段时间了,写页面对我来说没有任何问题。最近学习如何请求后端接口,本来想请求项目中正在用的接口,可是无缘,微信小程序不允许。官方给出的提示是,接口必须有域名且备案,我就无语了,我们的接口都是ip地址,所以我只能呵呵了。不过,也没太大关系,重点是学习方法。下面,我简单说一下官方给出的请求接口的方法。

    一、官方方法

    此方法简单易懂,但是在使用时代码量过大,我建议还是封装一下比较好用。

     1 wx.request({
     2   url: 'test.php', // 仅为示例,并非真实的接口地址
     3   data: {
     4     x: '',
     5     y: ''
     6   },
     7   header: {
     8     'content-type': 'application/json' // 默认值
     9   },
    10   success(res) {
    11     console.log(res.data)
    12   }
    13 })

    二、请求方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装)request.js如下:

     1 var app = getApp();
     2 //项目URL相同部分,减轻代码量,同时方便项目迁移
     3 //这里因为我是本地调试,所以host不规范,实际上应该是你备案的域名信息
     4 var host = 'http://localhost:8081/demo/';
     5 
     6 /**
     7  * POST请求,
     8  * URL:接口
     9  * postData:参数,json类型
    10  * doSuccess:成功的回调函数
    11  * doFail:失败的回调函数
    12  */
    13 function request(url, postData, doSuccess, doFail) {
    14   wx.request({
    15     //项目的真正接口,通过字符串拼接方式实现
    16     url: host + url,
    17     header: {
    18       "content-type": "application/json;charset=UTF-8"
    19     },
    20     data: postData,
    21     method: 'POST',
    22     success: function (res) {
    23       //参数值为res.data,直接将返回的数据传入
    24       doSuccess(res.data);
    25     },
    26     fail: function () {
    27       doFail();
    28     },
    29   })
    30 }
    31 
    32 //GET请求,不需传参,直接URL调用,
    33 function getData(url, doSuccess, doFail) {
    34   wx.request({
    35     url: host + url,
    36     header: {
    37       "content-type": "application/json;charset=UTF-8"
    38     },
    39     method: 'GET',
    40     success: function (res) {
    41       doSuccess(res.data);
    42     },
    43     fail: function () {
    44       doFail();
    45     },
    46   })
    47 }
    48 
    49 /**
    50  * module.exports用来导出代码
    51  * js文件中通过var call = require("../util/request.js")  加载
    52  * 在引入引入文件的时候"  "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能
    53  * 项目目录不止一级,不同的js文件对应的工具类的位置不一样
    54  */
    55 module.exports.request = request;
    56 module.exports.getData = getData;

    三、在page里面创建一个文件夹,创建四种文件,在js里面加入

     1 //引入代码
     2 var call = require("../util/request.js")
     3 
     4 Page({
     5   data: {
     6     pictureList: [],
     7   },
     8   
     9   onLoad: function () {
    10     var that = this;
    11     //调用封装的方法,为了方便我直接在页面加载的时候执行这个方法
    12     call.getData('lunbo.do', this.shuffleSuc, this.fail);
    15   },
    16   shuffleSuc: function (data) {
    17     var that = this;
    18     that.setData({
    19       pictureList: data.rows
    20     })
    21     //我后面测试了一下,直接this.setData也可以,但是因为我在没有使用封装方法的时候
    22     //this.setData报过错,不能直接用this,所以我在赋值的时候一般都会加上var that = this;
    23     //这句话算是一个不是习惯的习惯
    24   },
    25   fail: function () {
    26     console.log("失败")
    27   },
    28 })

    将回调函数写在page里面,在调用封装方法的时候通过this.方法名调用,这样就能确保that.setData方法有效。

  • 相关阅读:
    求助求助——请教各位高手,抽出一点宝贵的时间根据这个实例讲解一下应该如何分层呢?
    我的数据访问函数库的源代码(一)—— 共用部分
    我的网站的结构说明
    我的网站的后台管理的结构图。
    [转载]大项目中项目经理的作用
    ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI。
    我的数据访问函数库的源代码(三)——返回结构数组
    数据访问层的使用方法
    我的数据访问函数库的源代码(二)—— SQL语句部分
    [导入]用户登录及验证用户是否登录的代码
  • 原文地址:https://www.cnblogs.com/le220/p/10596762.html
Copyright © 2020-2023  润新知