fly.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * @Author: ZhengXiaowei
  3. * @Date: 2019-10-15 12:06:28
  4. * @LastEditors: ZhengXiaowei
  5. * @LastEditTime: 2019-10-15 14:32:19
  6. * @Description: api 配置入口
  7. */
  8. import fetch from "@system.fetch";
  9. import Fly from "flyio/dist/npm/hap";
  10. import apiConfig from "./config";
  11. import prompt from '@system.prompt';
  12. import { getToken, clearToken, getSendOrderId } from "./utils";
  13. import it from "../helper/interface.js";
  14. var fly = new Fly(fetch);
  15. var qs = require('qs');
  16. var appInfo = it.getAppInfo();
  17. var appDev, sendOrderId;
  18. it.getAppDev((res) => {
  19. appDev = res;
  20. })
  21. getSendOrderId((id) => {
  22. sendOrderId = id;
  23. })
  24. fly.config.baseURL = apiConfig.baseURL;
  25. fly.config.headers["Content-Type"] =
  26. "application/x-www-form-urlencoded;charset=utf-8";
  27. const filterNoToken = ["/login", "/refreshToken"];
  28. fly.interceptors.request.use(async config => {
  29. // 过滤一些不需要登录的路由d
  30. if (filterNoToken.indexOf(config.url) === -1) {
  31. let token = await getToken();
  32. if (config.headers) {
  33. config.headers.Authorization = token;
  34. config.headers["X-Version"] = appInfo.versionName;
  35. config.headers["X-Brand"] = qs.stringify(appDev);
  36. if (sendOrderId) config.headers["send_order_id"] = sendOrderId;
  37. }
  38. else {
  39. if (sendOrderId) {
  40. config.headers = { Authorization: token, 'X-Version': appInfo.versionName, 'X-Brand': qs.stringify(appDev), 'send_order_id': sendOrderId };
  41. } else {
  42. config.headers = { Authorization: token, 'X-Version': appInfo.versionName, 'X-Brand': qs.stringify(appDev) };
  43. }
  44. }
  45. if (config.method === "POST") {
  46. config.body = qs.stringify(config.body);
  47. }
  48. return config;
  49. } else return config;
  50. });
  51. fly.interceptors.response.use(
  52. async res => {
  53. if (!res.data.code) {
  54. return res.data.data;
  55. } else if (res.data.code === 10023) {
  56. // token失效
  57. await clearToken();
  58. console.log("begin refresh token");
  59. let refresh_token = await getToken();
  60. console.log("refresh token:", refresh_token);
  61. return fly(res.config);
  62. // return getToken().then(token => {
  63. // });
  64. }
  65. else {
  66. prompt.showToast({
  67. message: res.data.msg
  68. })
  69. return Promise.reject(res);
  70. }
  71. },
  72. err => {
  73. console.log('err', err)
  74. return Promise.reject(err);
  75. }
  76. );
  77. export default fly;