request.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import env from '../js/env.js';
  2. function service(options = {}) {
  3. options.url = `${env.baseUrl}${options.url}`;
  4. // 判断本地是否存在token,如果存在则带上请求头
  5. let access_token = uni.getStorageSync('accessToken')
  6. let refresh_token = uni.getStorageSync('refresh_token')
  7. options.header = {
  8. 'Authorization': 'Bearer '+ access_token,
  9. 'content-type':'application/json'
  10. };
  11. // resolved是返回成功数据,rejected返回错误数据
  12. return new Promise((resolved, rejected) => {
  13. options.success = (res) => {
  14. // 如果请求回来的状态码不是200则执行以下操作
  15. if (res.data.code !== 200) {
  16. // 非成功状态码弹窗
  17. console.log('错误信息:+++',res.data.msg)
  18. // 这里可以做一些状态码判断以及操作
  19. if(res.data.code === 401){
  20. uni.showToast({
  21. icon: 'none',
  22. duration: 3000,
  23. title: '登录过期,即将跳转登录页'
  24. });
  25. setTimeout(()=>{
  26. uni.navigateTo({
  27. url:'/pages/login/login'
  28. })
  29. },3000)
  30. }else{
  31. uni.showToast({
  32. icon: 'none',
  33. duration: 3000,
  34. title: res.data.msg || '系统繁忙,请重试!'
  35. });
  36. }
  37. // 返回错误信息
  38. rejected(res)
  39. } else {
  40. // 请求回来的状态码为200则返回内容
  41. resolved(res)
  42. }
  43. };
  44. options.fail = (err) => {
  45. console.log('错误信息:+++',err)
  46. // 请求失败弹窗
  47. uni.showToast({
  48. icon: 'none',
  49. duration: 3000,
  50. title: '服务器连接失败,请检查网络'
  51. });
  52. rejected(err);
  53. };
  54. uni.request(options);
  55. });
  56. }
  57. export default service;