/
DaniilSk
/
DesignLab
Обзор
Документация
Войти
/
DaniilSk
/
DesignLab
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
frontend/src/shared/api/client.ts
32 строки
1 KB
Даниил
feat(app): add typed api stores and navigation
13 июл 2026, 01:57
13 июл 2026, 01:57
c3dc2f7
Код
Авторство
О чём код?
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL as string | undefined export const USE_MOCKS = import.meta.env.VITE_USE_MOCKS !== 'false' const friendlyMessages: Record<number, string> = { 401: 'Нужно войти в аккаунт', 403: 'Действие сейчас недоступно', 404: 'Ничего не нашли', 409: 'Действие уже выполнено или недоступно', 422: 'Проверь данные и попробуй снова', 500: 'Что-то пошло не так', } export async function apiRequest<T>(path: string, options: RequestInit = {}): Promise<T> { if (!API_BASE_URL) { throw new Error('API base URL is not configured') } const token = localStorage.getItem('designlab.accessToken') const response = await fetch(`${API_BASE_URL}${path}`, { ...options, headers: { accept: 'application/json', 'content-type': 'application/json', ...(token ? { authorization: `Bearer ${token}` } : {}), ...options.headers, }, }) if (!response.ok) { throw new Error(friendlyMessages[response.status] ?? friendlyMessages[500]) } return response.json() as Promise<T> }