| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import config, { getHeaders } from './config';
- import LocalStorage from '@/LocalStorage';
- interface Api {
- get: (url: string, data?: any) => Promise<any>,
- post: (url: string, data?: any) => Promise<any>,
- put: (url: string, data?: any) => Promise<any>,
- delete: (url: string, data?: any) => Promise<any>,
- };
- const apiGenerator = (): Api => {
- type Method = 'GET' | 'POST' | 'PUT' | 'DELETE';
- function request(
- method: Method,
- url: string,
- data?: any,
- ): Promise<any> {
- const options: {
- header: Object,
- method: Method,
- url: string,
- data?: any,
- } = {
- header: getHeaders(),
- method: method,
- url: config.baseURL + url,
- };
- if (Object.keys(data).length !== 0) {
- const params: { [key: string]: any } = {};
- for (const key in data) {
- if (data[key]) {
- params[key] = data[key];
- }
- }
- options.data = params;
- };
- return new Promise((resolve, reject) => {
- uni.request({
- ...options,
- success: (response) => {
- // HTTP状态码
- const statusCode = response.statusCode;
- if (statusCode === 200) {// 成功信息
- const data = response.data as { code: number, data: any };
- if (data.code === 200) {// 成功
- resolve(data);
- } else {// 失败
- if (data.code === 401) {
- LocalStorage.clear();
- uni.reLaunch({
- url: '/pages/login/index/index',
- success: () => {
- uni.showToast({
- icon: 'none',
- mask: true,
- duration: 2000,
- title: '登录过期',
- });
- }
- });
- reject();
- } else {
- reject(data);
- }
- }
- } else {// 错误信息
- uni.showToast({
- icon: 'none',
- mask: true,
- duration: 2000,
- title: '服务异常',
- });
- reject();
- }
- },
- fail: () => {
- uni.showToast({
- icon: 'none',
- mask: true,
- duration: 2000,
- title: '请求失败',
- });
- reject();
- },
- });
- });
- }
- return {
- get: (url, data = {}) => {
- return request('GET', url, data);
- },
- post: (url, data = {}) => {
- return request('POST', url, data);
- },
- put: (url, data = {}) => {
- return request('PUT', url, data);
- },
- delete: (url, data = {}) => {
- return request('DELETE', url, data);
- },
- }
- };
- const api = apiGenerator();
- export default api;
|