| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { Http } from '../../lib/http/index';
- import UserLogin from '../login';
- import urlMap from './urlMap';
- function isString (o) {
- // 是否字符串
- return Object.prototype.toString.call(o).slice(8, -1) === 'String';
- }
- class MyHttp extends Http {
- constructor () {
- super();
- this.init();
- this.urlMap = urlMap;
- this.instance = null;
- }
- static getInstance () {
- if (!this.instance) {
- this.instance = new MyHttp();
- }
- return this.instance;
- }
- init () {
- this.interceptor = {
- before: _config => {
- // 该请求是否需要登录
- if (_config.needLogin) {
- if (!UserLogin.checkIfLogin()) {
- return false;
- }
- let _token = UserLogin.getToken();
- if (_token) {
- _config['header']['token'] = _token;
- _config.url = this.addToken(_config.url, _token);
- } else {
- return false;
- }
- }
- return _config;
- },
- after: res => {
- // TODO 处理如果返回未登录的情况
- let statusCode = res.statusCode;
- if (statusCode === 401) {
- UserLogin.logout();
- UserLogin.showLoginTips();
- }
- if (res.data && res.data.code === 0) {
- if (isString(res.data.msg)) {
- uni.showToast({
- icon: 'none',
- title: (res.data.msg && res.data.msg.toString()),
- duration: 3000
- });
- } else {
- uni.showToast({
- icon: 'none',
- title: '错误'
- });
- }
- }
- return res;
- }
- };
- }
- // 通用的post请求
- post (params) {
- return super.post(params);
- }
- // 通用的get请求
- get (params) {
- return super.get(params);
- }
- addToken (url, token) {
- if (url.indexOf('?') === -1) {
- url = `${url}?token=${token}`;
- } else {
- url = url.replace('?',
- `?token=${token}&`);
- }
- return url;
- }
- }
- let _myHttp = MyHttp.getInstance();
- export default _myHttp;
|