/
DaniilSk
/
DesignLab
Обзор
Документация
Войти
/
DaniilSk
/
DesignLab
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
admin-frontend/src/shared/api/client.ts
42 строки
1 KB
Даниил
feat(admin): initialize admin frontend
13 июл 2026, 23:42
13 июл 2026, 23:42
1cc58f6
Код
Авторство
О чём код?
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000/api/v1' export class AdminApiError extends Error { constructor(public status: number, message: string) { super(message) } } export function getAdminToken() { return localStorage.getItem('designlab.adminToken') } export function setAdminToken(token: string | null) { if (token) localStorage.setItem('designlab.adminToken', token) else localStorage.removeItem('designlab.adminToken') } export async function adminRequest<T>(path: string, options: RequestInit = {}): Promise<T> { const token = getAdminToken() const response = await fetch(`${API_BASE_URL}/admin${path}`, { ...options, headers: { accept: 'application/json', ...(options.body instanceof FormData ? {} : { 'content-type': 'application/json' }), ...(token ? { authorization: `Bearer ${token}` } : {}), ...options.headers, }, }) if (!response.ok) { throw new AdminApiError(response.status, statusMessage(response.status)) } return response.json() as Promise<T> } function statusMessage(status: number) { if (status === 401) return 'Нужно войти заново' if (status === 403) return 'Недостаточно прав' if (status === 404) return 'Запись не найдена' if (status === 409) return 'Конфликт данных' if (status === 422) return 'Проверьте поля формы' return 'Ошибка сервера' }