Files
antrean-operasi/services/api.ts
2026-02-02 08:13:15 +07:00

45 lines
1.1 KiB
TypeScript

import axios from 'axios'
// Get runtime config for Nuxt 3
const config = useRuntimeConfig()
// Create axios instance for local API
const api = axios.create({
baseURL: config.public.baseUrl,
timeout: 10000,
})
// Create axios instance for GoMed API
const apiGomed = axios.create({
baseURL: config.public.baseUrlGomed,
timeout: 10000,
})
// Shared request interceptor
const requestInterceptor = (config: any) => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
}
// Shared response interceptor
const responseInterceptor = (response: any) => response
const responseErrorInterceptor = (error: any) => {
// centralized error
console.error('API Error:', error.response)
return Promise.reject(error)
}
// Apply interceptors to both instances
api.interceptors.request.use(requestInterceptor)
api.interceptors.response.use(responseInterceptor, responseErrorInterceptor)
apiGomed.interceptors.request.use(requestInterceptor)
apiGomed.interceptors.response.use(responseInterceptor, responseErrorInterceptor)
export default api
export { apiGomed }