index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { Http } from '../../lib/http/index';
  2. import UserLogin from '../login';
  3. import urlMap from './urlMap';
  4. function isString (o) {
  5. // 是否字符串
  6. return Object.prototype.toString.call(o).slice(8, -1) === 'String';
  7. }
  8. class MyHttp extends Http {
  9. constructor () {
  10. super();
  11. this.init();
  12. this.urlMap = urlMap;
  13. this.instance = null;
  14. }
  15. static getInstance () {
  16. if (!this.instance) {
  17. this.instance = new MyHttp();
  18. }
  19. return this.instance;
  20. }
  21. init () {
  22. this.interceptor = {
  23. before: _config => {
  24. // 该请求是否需要登录
  25. if (_config.needLogin) {
  26. if (!UserLogin.checkIfLogin()) {
  27. return false;
  28. }
  29. let _token = UserLogin.getToken();
  30. if (_token) {
  31. _config['header']['token'] = _token;
  32. _config.url = this.addToken(_config.url, _token);
  33. } else {
  34. return false;
  35. }
  36. }
  37. return _config;
  38. },
  39. after: res => {
  40. // TODO 处理如果返回未登录的情况
  41. let statusCode = res.statusCode;
  42. if (statusCode === 401) {
  43. UserLogin.logout();
  44. UserLogin.showLoginTips();
  45. }
  46. if (res.data && res.data.code === 0) {
  47. if (isString(res.data.msg)) {
  48. uni.showToast({
  49. icon: 'none',
  50. title: (res.data.msg && res.data.msg.toString()),
  51. duration: 3000
  52. });
  53. } else {
  54. uni.showToast({
  55. icon: 'none',
  56. title: '错误'
  57. });
  58. }
  59. }
  60. return res;
  61. }
  62. };
  63. }
  64. // 通用的post请求
  65. post (params) {
  66. return super.post(params);
  67. }
  68. // 通用的get请求
  69. get (params) {
  70. return super.get(params);
  71. }
  72. addToken (url, token) {
  73. if (url.indexOf('?') === -1) {
  74. url = `${url}?token=${token}`;
  75. } else {
  76. url = url.replace('?',
  77. `?token=${token}&`);
  78. }
  79. return url;
  80. }
  81. }
  82. let _myHttp = MyHttp.getInstance();
  83. export default _myHttp;