export const useApi = async <T = unknown>(
endpoint: string,
opts?: UseApiRequestOptions,
): Promise<T> => {
const {
public: { BACKEND_API_URL },
} = useRuntimeConfig()
const {
$state: { token },
} = useUserStore()
const baseURL = BACKEND_API_URL
const headers: { Accept: string; Authorization?: string } = {
Accept: 'application/json',
}
if (token) {
headers.Authorization = `Bearer ${token}`
}
const { $humps } = useNuxtApp()
let body = opts?.body
const query = opts?.query
if ($humps) {
body = $humps.decamelizeKeys(body)
}
return await $fetch(endpoint, {
method: opts?.method,
body,
query,
baseURL,
headers,
params: opts?.params,
onResponse({ request, response }) {
if ($humps) {
response._data = $humps.camelizeKeys(response._data)
}
return Promise.resolve()
},
onResponseError({ request, response }): Promise<any> {
return Promise.reject(response)
},
})
}
export const useApi = async <T = unknown>(
endpoint: string,
opts?: UseApiRequestOptions,
): Promise<T> => {
const {
public: { BACKEND_API_URL },
} = useRuntimeConfig()
const {
$state: { token },
} = useUserStore()
const baseURL = BACKEND_API_URL
const headers: { Accept: string; Authorization?: string } = {
Accept: 'application/json',
}
if (token) {
headers.Authorization = `Bearer ${token}`
}
const { $humps } = useNuxtApp()
let body = opts?.body
const query = opts?.query
if ($humps) {
body = $humps.decamelizeKeys(body)
}
return await $fetch(endpoint, {
method: opts?.method,
body,
query,
baseURL,
headers,
params: opts?.params,
onResponse({ request, response }) {
if ($humps) {
response._data = $humps.camelizeKeys(response._data)
}
return Promise.resolve()
},
onResponseError({ request, response }): Promise<any> {
return Promise.reject(response)
},
})
}