Jelajahi Sumber

封装请求

littleblue55 2 bulan lalu
induk
melakukan
65cbc262e2
4 mengubah file dengan 109 tambahan dan 0 penghapusan
  1. 13 0
      api/user.js
  2. 17 0
      utils/baseurl.js
  3. 6 0
      utils/errorCode.js
  4. 73 0
      utils/request.js

+ 13 - 0
api/user.js

@@ -0,0 +1,13 @@
+import request from '@/utils/request'
+
+// 登录方法
+export function usernameLogin(data) {
+	return request({
+		'url': '/login',
+		headers: {
+			isToken: false
+		},
+		'method': 'post',
+		'data': data
+	})
+}

+ 17 - 0
utils/baseurl.js

@@ -0,0 +1,17 @@
+let BASE_URL = ''
+let FILE_URL = ''
+// baseurl  联调时改url
+if (process.env.NODE_ENV == 'development') {
+	BASE_URL = 'http://127.0.0.1:4523/m1/5748650-5431576-default';
+	FILE_URL = '';
+}else{
+	BASE_URL = '';
+	FILE_URL = '';
+}
+
+const configService = {
+	apiUrl: BASE_URL,
+	FILE_URL:FILE_URL
+}
+
+export default configService

+ 6 - 0
utils/errorCode.js

@@ -0,0 +1,6 @@
+export default {
+  '401': '认证失败,无法访问系统资源',
+  '403': '当前操作没有权限',
+  '404': '访问资源不存在',
+  'default': '系统未知错误,请反馈给管理员'
+}

+ 73 - 0
utils/request.js

@@ -0,0 +1,73 @@
+import configService from './baseurl.js'
+import { msg as toast, showConfirm, tansParams } from './common.js'
+import { getToken } from './auth.js'
+import errorCode from './errorCode.js'
+// 联调时调整:
+// 1.configService 的url
+// 2.请求头headers
+// 3.返回数据格式
+
+const BASE_URL = configService.apiUrl;
+let timeout = 10000
+
+const request = config => {
+	const isToken = (config.headers || {}).isToken === false;
+	config.headers = config.headers || {};
+
+	if (getToken() && !isToken) {
+		config.headers['Authorization'] = 'Bearer ' + getToken();
+	}
+
+	if (config.params) {
+		let url = config.url + '?' + tansParams(config.params);
+		url = url.slice(0, -1); // 去掉最后一个&
+		config.url = url;
+	}
+
+	return new Promise((resolve, reject) => {
+		uni.request({
+				method: config.method || 'get',
+				timeout: config.timeout || timeout,
+				url: config.baseUrl || BASE_URL + config.url,
+				data: config.data,
+				header: config.headers,
+				dataType: 'json'
+			}).then(res => {
+				const code = res.data.code || 200;
+				const msg = errorCode[code] || res.data.msg || errorCode['default'];
+				if (code === 401) {
+					showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
+						if (res.confirm) {
+							uni.reLaunch({
+								url: '/pages/login/login'
+							});
+						}
+					});
+					reject('无效的会话,或者会话已过期,请重新登录。');
+				} else if (code === 500) {
+					toast(msg);
+					reject('500');
+				} else if (code !== 200) {
+					toast(msg);
+					reject(code);
+				}
+				resolve(res.data.data);
+			})
+			.catch(error => {
+				let {
+					message
+				} = error;
+				if (message === 'Network Error') {
+					message = '后端接口连接异常';
+				} else if (message.includes('timeout')) {
+					message = '系统接口请求超时';
+				} else if (message.includes('Request failed with status code')) {
+					message = '系统接口' + message.substr(message.length - 3) + '异常';
+				}
+				toast(message);
+				reject(message);
+			});
+	});
+};
+
+export default request;