小程序中使用flyio封装网络请求

Flyio简介

Fly.js 通过在不同 JavaScript 运行时通过在底层切换不同的 Http Engine来实现多环境支持,但同时对用户层提供统一、标准的Promise API。不仅如此,Fly.js还支持请求/响应拦截器、自动转化JSON、请求转发等功能,详情请参考:https://github.com/wendux/fly 。下面我们看看在微信小程序、mpvue中和中如何使用fly.

Flyio 官方地址 文档

github地址

Flyio的一些特点

fly.js 是一个基于 promise 的,轻量且强大的Javascript http 网络库,它有如下特点:

  • 提供统一的 Promise API。
  • 浏览器环境下,轻量且非常轻量 。
  • 支持多种JavaScript 运行环境
  • 支持请求/响应拦截器。
  • 自动转换 JSON 数据。
  • 支持切换底层 Http Engine,可轻松适配各种运行环境。
  • 浏览器端支持全局Ajax拦截 。
  • H5页面内嵌到原生 APP 中时,支持将 http 请求转发到 Native。支持直接请求图片。

接着上一篇小程序搭建框架完美使用mpvue搭建小程序框架,继续在小程序中使用flyio请求,封装代码如下

一、src下新建utils/request.js文件

var Fly=require("flyio/dist/npm/wx") 
import { getCache } from '../utils'

const request = new Fly()


// 全局加载提示 - 设定时间
let ltime = 0;

function closeLoading(param) {
    ltime--
 }
request.interceptors.request.use((request) => {
    // 全局加载提示 - 展示提示
    // wx.showNavigationBarLoading() 
    ltime++

    let dataSource = getCache("dataSource")
    request.headers = {
        "Content-Type": "application/x-www-form-urlencoded",
        "source": "miniApp",
        "dataSource": dataSource ? dataSource : ''
    }
    // 没用到
    if (request.url.indexOf('getReviewInfo') != -1) {
        closeLoading()
        return request
    }
    // 登录
    console.log('这是token');
    console.log();
    let type = '';
    if(request.url.indexOf("wxLogin") != -1) {
        type = request.body.loginType;
    }
    console.log(getCache("token"));
    console.log('这是token');
    if (request.url.indexOf("wxLogin") == -1 || type == 'WORKBENCH') {
        // let storeId = getCache("storeId");
        let storeCode = getCache("storeCode");
        let inviter = getCache("inviter");
        let token = getCache("token");
        request.headers = {
            "Content-Type": "application/x-www-form-urlencoded",
            "source": "miniApp",
            "token": token,
            "storeCode": storeCode,
            "inviter": inviter
        }
        console.log('打印request');
        console.log(request);
        console.log('打印request');
        let dataSource = getCache("dataSource")
        if (dataSource) {
            request.headers['dataSource'] = dataSource
        }
    }
    return request
})

request.interceptors.response.use((response, promise) => {
         closeLoading()
        // wx.hideNavigationBarLoading()
        // 微信运维统计
        if (response.status) {
            wx.reportMonitor('0', +(response.status))
        }
        if (response.headers.date) {
            let time = new Date().getTime() - new Date(response.headers.date).getTime()
            wx.reportMonitor('1', +(time))
        }
        // 错误提示
        if (response.status != 200) {
            wx.showToast({
                title: '出错啦!请稍后再试试哦~',
                icon: 'none',
                duration: 2000
            })
        }
        return promise.resolve(response.data)
    },
    (err, promise) => {
        wx.hideNavigationBarLoading()
        return promise.resolve()
    }
)
export default request
二、src下新建utils/api.js文件
 export const baseUrlApi = 'http://192.168.128.242:8080'//---开发调试环境
//export const baseUrlApi = 'https://test.mini.com'//---测试环境https
//export const baseUrlApi = 'https://product.mini.com'//---生产环境https

这个里面可以写不同环境或者调试的接口地址

三、src下新建service文件夹,在这个下面不同的模块简历不同的js文件,例如:login-service.jsorder-service.js

里面代码示例如下

import { baseUrlApi } from '../utils/api'
import request from '../utils/request'

export default {
 // 登录
    wxLogin: (data) =>
        request.post(`/store-miniApp-web/external/interface/wechat/wxLogin`, data, { baseURL: baseUrlApi }),

 // 收藏
  addCollect: (goodId, status) =>
    request.get(`/store-miniApp-web/store/member/addCollect?goodId=${goodId}&status=${status}`,
      null, {
        baseURL: baseUrlApi
      }),

}
四、接口请求的使用
import loginApi from "@/service/login-service";

  methods: {
//-登录
    clickLoginBtn() {
      var data = {
        phone: '18709090909',
        password: "123456",
      };
      console.log("登录参数==", data);
      loginApi.wxLogin(data).then(
        data => {
          if (!data) {
            this.$toast(data.msg);
            return;
          }
          if (data.code==0) {
            console.log("登录成功", data);   
          }
        },
        err => {

        }
      );
    },
    //-收藏
    collect() {
      let isCollect = "1"; //1收藏 0取消
      let goodId = "4343434";
      loginApi.addCollect(goodsId, isCollect).then(data => {
        if (data.code != 0) {
          console.log("收藏失败", data);
          return;
        }
        if (isCollect == 1) {
          this.$toast("取消成功");
        } else {
          this.$toast("收藏成功");
        }
      });
    }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容