小程序api封装(方法一)

研究小程序的路上越走越远....坑很多 很不习惯刚刚开始

在utils文件夹下面新增api.js  http.js文件

// http.js
module.exports = {
  http(url, method, params) {
     // 获取token,自行获取token和签名,token和签名表示每个接口都要发送的数据
    let token = ''
     // 获取签名 (后台怎么定义的,就传什么) 具体情况穿不穿
    let sign = ''
    let data = {
      token,
      sign
    }
    // 在这里判断一下data是否存在,params表示前端需要传递的数据,params是一个对象,有三组键值对,
    // data:表示请求要发送的数据,success:成功的回调,fail:失败的回调,这三个字段可缺可无,其余字段会忽略
    if (params.data) { 
      for (let key in params.data) { // 在这里判断传过来的参数值为null,就删除这个属性
        if (params.data[key] == null || params.data[key] == 'null') {
          delete params.data[key]
        }
      }
      data = {
        ...data,
        ...params.data
      }
    }
     // 就是拼接上前缀,此接口域名是开放接口,可访问 如果开发环境可以勾选详情选项的 不校验合法域名、TLS版本及HTTPS证书
    wx.request({
      url: '合法域名' + url,
      // 判断请求类型,除了值等于'post'外,其余值均视作get其他的请求类型也可以自己加上的
      method: method == 'post' ? 'post' : 'get', 
      data,
      // post请求 把header 该为 application/x-www-form-urlencoded 就可以了
      header: {
        'content-type': method == 'get' ? 'application/json' : 'application/x-www-form-urlencoded'
      },
      success(res) {
        params.success && params.success(res.data)
      },
      fail(err) {
        wx.showToast({
          title: '服务器内部错误',
          icon: 'none',
          duration: 1500
        })
        params.fail && params.fail(err)
      },
      complete() {
        setTimeout(() => {
          wx.hideLoading();
        },1500)
      }
    })
  }
}
// api.js
// 在这里面定义所有接口,一个文件管理所有接口,易于维护
// 引入刚刚封装好的http模块,import属于ES6的语法,微信开发者工具必须打开ES6转ES5选项
import { http } from './http'; 

// 每一个接口定义一个函数,然后暴露出去,供逻辑代码调用
// 接口请求的路由地址以及请求方法在此处传递
function postLoginApi(params) { 
  http('/api/xxx/login', 'post', params)
}

function getUserListApi(params) { 
  http('/api/xxx/list', 'get', params) 
}

// 暴露接口
export default { 
  postLoginApi,
  getUserListApi
}

页面调用


  import http from '../../utils/api' // 引入api接口管理文件
getData(){
    http.postLoginApi({ // 调用接口,传入参数
      data: {
        token: '460512FF0FE2392D6CB6D8A6560805CC'
      },
      success: res => {
        console.log('接口请求成功', res)
        this.setData({
          // data定义的数据
          userInfo: res.data
        })
      },
      fail: err => {
        console.log(err)
      }
    })
  },
onLoad: function (){
    this.getData()
}

  原创未经允许不得转载!!!转载请注明出处~谢谢合作;

原文地址:https://www.cnblogs.com/lhl66/p/12888408.html