封装微信小程序请求

2019-08-18  本文已影响0人  哭不是罪

1.封装wx.request

import config from "./config";

const baseUrl = config.baseUrl;

// 封装get请求

const get = (url, data) => {

  let header = { "content-type": "application/json" };

  let tokenKey = wx.getStorageSync("tokenKey");

  if (tokenKey) {

    header.tokenKey = tokenKey;

  }

  return new Promise((resolve, reject) => {

    wx.request({

      url: baseUrl + url,

      data: data,

      header,

      success(res) {

        if (res.statusCode == 200) {

          if (res.data.code == -1) {

            //处理登录过期

          }

          resolve(res.data);

        } else {

          //此处处理非200状态码的结果

        }

      },

      error(e) {

        reject(e);

      }

    });

  });

};

// 封装post请求

const post = (url, data) => {

  let header = { "content-type": "application/json" };

  let tokenKey = wx.getStorageSync("tokenKey");

  if (tokenKey) {

    header.tokenKey = tokenKey;

  }

  return new Promise((resolve, reject) => {

    wx.request({

      url: baseUrl + url,

      data: data,

      method: "POST",

      header,

      success(res) {

        if (res.statusCode == 200) {

          if (res.data.code == -1) {

            //处理登录过期

          }

          resolve(res.data);

        } else {

          //此处处理非200状态码的结果

        }

      },

      error(e) {

        reject(e);

      }

    });

  });

};

// 封装上传文件

const uploadFiles = data => {

  let header = {

    tokenKey: wx.getStorageSync("tokenKey")

  };

  const { url, filePath, name, formData } = data;

  return new Promise((resolve, reject) => {

    wx.uploadFile({

      url: baseUrl + url,

      filePath,

      name,

      formData,

      header,

      success(res) {

        const data = JSON.parse(res.data);

        resolve(data);

      },

      error(err) {

        reject(err);

      }

    });

  });

};

const http = { get, post, uploadFiles };

module.exports = http;

2.封装flyio

其中wx.js文件在flyio的github上面下载即可

import FlyWX from './wx.js'

import config from "../../config/index"

const Flyio = new FlyWX()

class HttpRequest {

  constructor() {

    this.defaultConfig = {

      baseURL: config.baseUrl[config.NODE_ENV],

      method: "post",

      headers: {

        "Content-Type": "application/x-www-form-urlencoded"

      }

    };

    Flyio.config = Object.assign({}, Flyio.config, this.defaultConfig)

    this.interceptors(Flyio)

    return Flyio

  }

  // 拦截器

  interceptors(instance) {

    // 请求拦截

    instance.interceptors.request.use(request => {

         return request

    }, error => {

      return Promise.reject(error)

    });

    // 响应拦截

    instance.interceptors.response.use(response => {

      const { data } = response

      return data

    }, error => {

      // 处理错误请求响应

 });

  }

}

export default new HttpRequest()

②使用的时候在api.js中引入,如

import http from '../libs/request/index'

const reqGoodsList = (data) => http.request(

    "api/get-goods-list",

    data

);

export default {

    reqGoodsList

}

上一篇 下一篇

猜你喜欢

热点阅读