美文网首页
【js】Flyio库 使用总结

【js】Flyio库 使用总结

作者: 辣子_ | 来源:发表于2021-04-26 19:12 被阅读0次

flyio使用过程中,请求头请求参数可以全局配置好,也可以在全局配置过的情况下使用时做个性化单独配置,网址flyio,使用方法:

npm安装

cnpm install flyio

安装后使用,不同使用平台要做判断,app和微信小程序使用相同方式引入(本文件为request.js):

let Fly= null
// #ifdef H5
Fly=require("flyio/dist/npm/fly")
// #endif
// #ifdef MP-WEIXIN || APP-PLUS
Fly = require("flyio/dist/npm/wx")
// #endif

let fly = fly = new Fly();
fly.config.baseURL = websiteUrl;   //websiteUrl:api请求url
fly.config.IMG_URL = imgUrl;     //图片显示url
fly.config.IMG_LOAD = imgload;  //图片上传url
fly.config.timeout = 100000;   //超时时间



//需要验证token需做请求拦截,不需要验证token则不需要以下代码
let newFly = new Fly();
newFly.config = fly.config

fly.interceptors.request.use(function(request) {
    let customer = uni.getStorageSync("customer")
    
    if(!customer){
              //这里可以判断是否登录,如果没有登录跳转登录页;
              // 可加上判断当前是否是登录页,如果是无需加跳转
        uni.redirectTo({
            url:'/pages/menu/home/home'
        })
        return
    }
    
    if(!request.headers['Content-Type']){    //如果单独配置过Content-Type,则不再赋值
        request.headers['Content-Type'] = 'application/json';
    }
    request.headers['token'] = customer.token?customer.token:'';    //请求头附加token数据
    request.body = request.body; 
});

fly.interceptors.response.use(function(response, promise) {

    //token失效,申请token
    if(response.data.error == 'token失效'){
        return newFly.get('/token.php',{}).then(function(res) {
            if(!res.data.error){
                                //请求成功,存储token
                uni.setStorageSync('customer',res.data)
            }else{
                uni.switchTab({
                    url:'/pages/menu/home/home'
                })
                return    //这里写return不太合适,因为如果不返回数据,请求完成then中的代码会报错,所以最好按钮返回的数据格式返回空数据!!
            }
            //重新生成token失效的请求,去请求数据
            return fly.request(response.request.url,response.request.body,{method:response.request.method});
        }).catch(function(err) {
            console.log(err)
        })
    }else{
        return promise.resolve(response.data);
    }
});
export {fly}

在apis.js中引入:

import {fly} from './request.js'

export default {
  // 登录注册
  login:function (params) {
    return fly.get("/login.php",params);
  },

  //等等......
}

封装api的好处在于可以统一管理api,uni app中则可以配置混淆为文件,防止app包被反编译api接口暴露不安全。main.js中:

import apis from './utils/apis.js';
Vue.prototype.$apis = apis

然后就可以使用啦:

let param  ={}
this.$apis.login(param).then(res => {
            //登录成功....
    }).catch(err=>{
        console.log(err)
        that.msgTip('登录失败')
    })

相关文章

网友评论

      本文标题:【js】Flyio库 使用总结

      本文链接:https://www.haomeiwen.com/subject/rpgerltx.html