UNPKG

@huntianning/components

Version:

Custom components for HTN

105 lines (94 loc) 2.76 kB
import axios from 'axios' import Message from '@huntianning/components/packages/message' let instance = null function captureBusinessError(error) { if (error && error.data && error.data.status === 'FAIL') { const message = error.data.data || error.data.message || '未知异常' Message.error(message) } return Promise.reject(error) } export const init = (options) => { options = Object.assign({ baseURL: null, withCredentials: true, requestInterceptor: null, responseInterceptor: null }, options) instance = axios.create(options) instance.interceptors.request.use(config => { if (options.requestInterceptor) { return options.requestInterceptor(config) } return config }, error => { return Promise.reject(error) }) instance.interceptors.response.use(response => { if (options.responseInterceptor) { return options.responseInterceptor(response) } return response }, error => { let message = '未知错误' if (error.response) { if (error.response.status === 404) { message = '服务未找到' } else if (error.response.status === 500) { message = '服务异常' } else if (error.response.status === 401) { message = '登录失效' } } Message.error(message) return Promise.reject(error) }) } export function post(url, data, opts) { if (!instance) { throw new Error('[Request] 使用前请先执行init方法初始化') } if (data && opts && opts.headers && opts.headers['Content-Type'] === 'multipart/form-data') { const formData = new FormData() if (data && typeof data === 'object') { Object.keys(data).forEach(key => { formData.append(key, data[key]) }) } data = formData } return instance.post(url, data, opts).then(null, captureBusinessError) } export function get(url, params) { if (!instance) { throw new Error('[Request] 使用前请先执行init方法初始化') } return instance.get(url, { params }).then(null, captureBusinessError) } export function del(url, params) { if (!instance) { throw new Error('[Request] 使用前请先执行init方法初始化') } return instance.delete(url, { params }).then(null, captureBusinessError) } export function put(url, data) { if (!instance) { throw new Error('[Request] 使用前请先执行init方法初始化') } return instance.put(url, data).then(null, captureBusinessError) } /** * 从服务器请求登录用户数据 */ export function mockGetLoginUser(username) { return post('/system/user/sendSmsCode', { username, type: 'HTN' }).then(code => { return post(`/auth/login?code=${code}&type=HTN&username=${username}`) }) }