Ancora sistemazioni con typescript....

This commit is contained in:
paolo
2018-11-15 19:48:37 +01:00
parent f5b73414b1
commit 7c49a97217
30 changed files with 626 additions and 253 deletions

73
src/store/Api/Instance.ts Normal file
View File

@@ -0,0 +1,73 @@
import axios, { AxiosInstance, AxiosPromise, AxiosResponse, AxiosInterceptorManager } from 'axios'
// import LoginModule from '../Modules/Auth/LoginStore'
import router from '@router'
import {clone} from 'lodash'
import * as Types from './ApiTypes'
export const API_URL = process.env.API_URL
export const APP_BASE = process.env.NODE_ENV === 'development' ? 'http://localhost:5000/' : 'http://51.254.123.205:5000/'
export const axiosInstance: AxiosInstance = axios.create({
baseURL: API_URL,
headers: {
'Accept': 'application/json'
}
})
axiosInstance.interceptors.response.use(
(response) => {
console.log(response)
return response
},
(error) => {
console.log(error.response.status)
console.log('Request Error: ', error.response)
return Promise.reject(error)
}
)
export const addAuthHeaders = () => {
// axiosInstance.defaults.headers.Authorization = `Bearer ${LoginModule.state.userInfos.userToken}`
}
export const removeAuthHeaders = () => {
delete axiosInstance.defaults.headers.Authorization
}
async function Request(type: string, path: string, payload: any, noAuth?: boolean): Promise<Types.AxiosSuccess | Types.AxiosError> {
try {
console.log(`Axios Request [${type}]:`, axiosInstance.defaults)
let response: AxiosResponse
if (type === 'post' || type === 'put') {
response = await axiosInstance[type](path, payload, {
headers: {
'Content-Type': 'application/json'
}
})
console.log(new Types.AxiosSuccess(response.data))
return new Types.AxiosSuccess(response.data)
} else if (type === 'get' || type === 'delete') {
// @ts-ignore
response = await axiosInstance[type](path, {
params: payload,
headers: {'Content-Type': 'application/json'}
})
return new Types.AxiosSuccess(response.data)
} else if (type === 'postFormData') {
response = await axiosInstance.post(path, payload, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
return new Types.AxiosSuccess(response.data)
}
}
catch (error) {
if (error.response) {
return Promise.reject(new Types.AxiosError(error.response.status, error.response.data))
} else {
return Promise.reject(new Types.AxiosError(0))
}
}
}
export default Request