zoukankan      html  css  js  c++  java
  • 微信小程序封装数据API接口请求

    前言:为了请求接口维护起来比较方便,所以我们程序员就通常把请求地址封装到一个文件里面

     

    1.首先我们要在utils文件里面创建一个config.js,当然也可以新建一个文件夹,所以看你们的习惯咯,只要路径引入对就好了。

        1)config.js文件主要是配置请求地址(域名)

    //这里使用的接口呢都是自己模拟的,亲么可以根据自己的需求进行添加
    module.exports = {
      //开发环境的url
      dev: {
        baseUrl: "https://api.gdzhenglu.com"
      },
      //测试环境url
      test: {
        baseUrl: "http://www.test.com"
      },
      //线上环境url
      prod: {
        baseUrl: 'https://api.it120.cc'
      }
    }
    1.  在utils文件里面创建一个request.js,封装reques请求,引入config中的url(后面点什么就是 什么环境) 

      (1) 后面点什么就是(线上,测试等)环境const {baseUrl} = require('./config.js').dev;

       

            (2) 二次封装wx.request

    // 引入config中的url后面点什么就是 什么环境
    const {baseUrl} = require('./config.js').dev;
    
    //在这里添加我们的专业域名(二级域名)
    const subDomain = 'https://api.gdzhenglu.com';
    /*
     *二次封装wx.request
     * 
     */
    module.exports = {
      /**
       * 二次封装wx.request
       * {String }url:请求的接口地址
       * {String} method:请求方式 GET,POST....
       * {Object} data:要传递的参数
       * { boolean }isSubDomain:表示是否添加二级子域名 true代表添加, false代表不添加
       */
      request: (url, method, data, isSubDomain) => {
        // console.log('这是我封装的ajax请求', baseUrl);
        //这里使用ES6的写法拼接的字符串
        let _url = `${baseUrl}/${isSubDomain ? subDomain: '' }${url}`;
        // console.log(_url);
        return new Promise((resolve, reject) => {
          wx.showLoading({
            title: '正在加载',
          });
          wx.request({
            url: _url,
            data: data,
            method: method,
            header: {
              'content-type': 'application/x-www-form-urlencoded',
            },
            success: (res) => {
              // console.log('从接口获取到的数据', res);
              let {
                code
              } = res.data;
              if (code === 0) {
                resolve(res.data);
                wx.hideLoading();
              } else {
                wx.showToast({
                  title: '数据请求错误',
                })
              }
            },
            fail() {
              reject('接口有误,请检查')
            }
          });
    
        });
      },
    }
     

    3. 在utils文件里面创建一个api.js,封装所有的接口路径,

        (1) 引入封装的reuest请求const {request} = require('./request.js')

    //引入封装的reuest请求
    const {
      request
    } = require('./request.js')
    //基于业务封装的接口
    module.exports = {
    
      /* 轮播图 */
      banners: () => {
        return request('banner_list', 'GET', {}, false);
      },
      neworder: () => {
        let data = {
          num: 3
        }
        return request('all_new_order', 'GET', {data}, false);
      }
    
      /* 封装商品列表的方法 */
      // getGoodsList:()=>{
      //   return request('要请求的路径','请求方式|GET|POST',{要携带的参数},是否添加子域名 |true|false);
      // },
      /* 添加商品收藏 */
      // addGoodsFav: (goodsId, token)=>{
      //   return request('要请求的路径', 'POST', { goodsId:goodsId, token:token},true);
      // },
      /* 获取商品的分类 */
      // getGoodsCate:()=>{
      //   return request('要请求的路径','GET',{},true);
      // }
    }

    4. 在index.js页面引用

        (1)在这个页面要要用到api.js那边的几个方法就引用几个方法

    //在这个页面要要用到api.js那边的几个方法就引用几个方法
    const {
      banners,
      neworder
    } = require('../../utils/api.js')

    (2) 在index页面的使用

    // pages/httpName/httpName.js
    //在这个页面要要用到api.js那边的几个方法就引用几个方法
    const {
      banners,
      neworder
    } = require('../../utils/api.js')
    var app = getApp();
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
    
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.banners();
        this.getNeworder();
      },
      //轮播接口的使用
      banners() {
        banners().then(res => {
          console.log('终于等到你', res);
        })
      },
      // 最新下单者
      getNeworder() {
        neworder().then(res => {
          console.log('终于等到你', res);
        }).catch(err => {
          console.log(err)
        })
      },
    
      /**
       * 生命周期函数--监听页面初次渲染完成
       */
      onReady: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面隐藏
       */
      onHide: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面卸载
       */
      onUnload: function () {
    
      },
    
      /**
       * 页面相关事件处理函数--监听用户下拉动作
       */
      onPullDownRefresh: function () {
    
      },
    
      /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom: function () {
    
      },
    
      /**
       * 用户点击右上角分享
       */
      onShareAppMessage: function () {
    
      }
    })
    转自:https://mp.weixin.qq.com/s?src=11&timestamp=1622123199&ver=3094&signature=BmvOlDKDYXYFdYxUwgXdU7fwvgWbeQgm*tI8SQaLPw-rKmtlwNyagcow8P8pfwhsx48bI-QEC8MEJY02nr9eTmmfA-wEBRGv4G8Sd1nMY-*Rw6*AJO-d8ulOheUI--dw&new=1
    //引入封装的reuest请求const {  request} = require('./request.js')//基于业务封装的接口module.exports = {
    /* 轮播图 */ banners: () => { return request('banner_list', 'GET', {}, false); }, neworder: () => { let data = { num: 3 } return request('all_new_order', 'GET', {data}, false); }
    /* 封装商品列表的方法 */ // getGoodsList:()=>{ // return request('要请求的路径','请求方式|GET|POST',{要携带的参数},是否添加子域名 |true|false); // }, /* 添加商品收藏 */ // addGoodsFav: (goodsId, token)=>{ // return request('要请求的路径', 'POST', { goodsId:goodsId, token:token},true); // }, /* 获取商品的分类 */ // getGoodsCate:()=>{ // return request('要请求的路径','GET',{},true); // }}
  • 相关阅读:
    微众银行面试小总结
    关于撑开父容器高度的小探讨
    2015年9月阿里校招前端工程师笔试题
    高性能JavaScript 重排与重绘
    高性能JavaScript DOM编程
    纯CSS3动画实现小黄人
    JS+css3实现图片画廊效果总结
    新游戏《机械险境》
    Twitter "fave"动画
    fragment 与 activity
  • 原文地址:https://www.cnblogs.com/hudaxian/p/14820025.html
Copyright © 2011-2022 走看看