/* * @Author: ZhengXiaowei * @Date: 2019-10-15 12:06:28 * @LastEditors: ZhengXiaowei * @LastEditTime: 2019-10-15 14:32:19 * @Description: api 配置入口 */ import fetch from "@system.fetch"; import Fly from "flyio/dist/npm/hap"; import apiConfig from "./config"; import prompt from '@system.prompt'; import { getToken, clearToken, getSendOrderId } from "./utils"; import it from "../helper/interface.js"; var fly = new Fly(fetch); var qs = require('qs'); var appInfo = it.getAppInfo(); var appDev, sendOrderId; it.getAppDev((res) => { appDev = res; }) getSendOrderId((id) => { sendOrderId = id; }) fly.config.baseURL = apiConfig.baseURL; fly.config.headers["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8"; const filterNoToken = ["/login", "/refreshToken"]; fly.interceptors.request.use(async config => { // 过滤一些不需要登录的路由d if (filterNoToken.indexOf(config.url) === -1) { let token = await getToken(); if (config.headers) { config.headers.Authorization = token; config.headers["X-Version"] = appInfo.versionName; config.headers["X-Brand"] = qs.stringify(appDev); if (sendOrderId) config.headers["send_order_id"] = sendOrderId; } else { if (sendOrderId) { config.headers = { Authorization: token, 'X-Version': appInfo.versionName, 'X-Brand': qs.stringify(appDev), 'send_order_id': sendOrderId }; } else { config.headers = { Authorization: token, 'X-Version': appInfo.versionName, 'X-Brand': qs.stringify(appDev) }; } } if (config.method === "POST") { config.body = qs.stringify(config.body); } return config; } else return config; }); fly.interceptors.response.use( async res => { if (!res.data.code) { return res.data.data; } else if (res.data.code === 10023) { // token失效 await clearToken(); console.log("begin refresh token"); let refresh_token = await getToken(); console.log("refresh token:", refresh_token); return fly(res.config); // return getToken().then(token => { // }); } else { prompt.showToast({ message: res.data.msg }) return Promise.reject(res); } }, err => { console.log('err', err) return Promise.reject(err); } ); export default fly;