Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from 'axios'
- import Qs from 'qs'
- import MockAdapter from 'axios-mock-adapter'
- import { createMocks } from '../mocks'
- /* eslint-disable-next-line */
- export const API_URL = process.env.API_URL
- /* eslint-disable-next-line */
- export const WITH_MOCKS = process.env.WITH_MOCKS
- /* eslint-disable-next-line */
- export const MOCK_ROLE = process.env.MOCK_ROLE
- const AXIOS_TIMEOUT = 2500
- const axiosInstance = axios.create({
- baseURL: API_URL || 'http://test-mock-server/admin',
- paramsSerializer: function(params) {
- return Qs.stringify(params, {arrayFormat: 'brackets'})
- }
- })
- if (WITH_MOCKS === 'true') {
- createMocks(new MockAdapter(axiosInstance, { delayResponse: 500 }))
- }
- export { axiosInstance }
- export const requestApi = async (method, url, data, multipart = false, uploadCallback = null, cancelToken = null) => {
- const config = {
- method: method,
- url: url,
- params: {},
- timeout: AXIOS_TIMEOUT,
- }
- if (uploadCallback) {
- config.onUploadProgress = uploadCallback
- }
- if (cancelToken) {
- config.cancelToken = cancelToken
- }
- if (data) {
- switch (method) {
- case 'post':
- case 'put':
- case 'patch':
- config.data = data
- break
- default:
- config.params = {...config.params, ...data}
- break
- }
- }
- if (multipart) {
- const formData = new FormData()
- for (const key in data) {
- if (data.hasOwnProperty(key)) {
- formData.append(key, data[key])
- }
- }
- config.headers = {'Content-Type': undefined, enctype: 'multipart/form-data'}
- config.data = formData
- } else if (method !== 'get') {
- config.data = data
- }
- try {
- let response = await axiosInstance.request(config)
- return response.data
- } catch (error) {
- //Не авторизован
- if (!axios.isCancel(error) && error.response.status === 403) {
- document.location.reload()
- } else {
- throw (error)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement