У меня имеется написанное, пока что простое, api.
Есть instance axios:
import axios from 'axios'
const defaultConfig = {
baseURL: import.meta.env.VITE_VUE_APP_BASE_URL,
withCredentials: true,
headers: {
accept: 'application/json',
},
}
const DefaultAPIInstance = axios.create(defaultConfig)
export { DefaultAPIInstance }
export default {
DefaultAPIInstance,
}
И его примерное использование:
import { DefaultAPIInstance } from '@/api'
function signIn(payload) {
return DefaultAPIInstance.post('/api/auth/login', payload)
}
function signUp(payload) {
return DefaultAPIInstance.post('/api/auth/registration', payload)
}
function logOut() {
return DefaultAPIInstance.post('/api/auth/logout')
}
export { signIn, signUp, logOut }
export default {
signIn,
signUp,
logOut,
}
Во vue3 существует возможность отделить логику и состояние от остального компонента. Предполагается, что statefull модуль может выполнять некоторые задачи, на выходе отдавая данные.
Тут начинаются вопросы:
- Cтоит ли обернуть все эти запросы в composables?
- Лучше использовать pinia так как рекомендуют для работы с запросами к api?
- Оставить всё как есть ведь это и так лучший вариант?
Проблемы примерно такие:
Pinia пока самый беспроблемный вариант. Мы пишем туда данные, забираем их оттуда же. Всё снаружи как и сейчас, логика использования уже внутри компонента.
try {
const response = await signIn({
email: values.email,
password: values.password,
})
const expirationDate = new Date(Date.now() + 60 * 60 * 1000)
document.cookie = `access_token=${
response.data.access_token
}; expires=${expirationDate.toUTCString()} path=/`
this.$router.push('/')
} catch (error) {
this.errorServer = error.response.data
this.errorValues = values
console.error(error)
}
Если мы оборачиваем всё в композиции то можем сразу использовать данные импортированные из композиций.
Что то я в этой каше совсем запутался.