import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Classes/ApiError - Утилита ошибок (Статическая)'/>

# Класс ApiError

Класс `ApiError` является **основной утилитой (статической)** для управления хранилищем ошибок API и идентификации сбоев. Он предоставляет централизованный синглтон-интерфейс для регистрации паттернов ошибок и преобразования сырых сетевых ответов в структурированные объекты `ApiErrorItem`.

## Ключевые особенности

- **Статический интерфейс** — управление критериями ошибок и анализ ответов без необходимости создания экземпляра класса.
- **Безопасный синглтон для SSR** — использует `ServerStorage` для поддержания изолированного хранилища ошибок для разных запросов во время серверного рендеринга.
- **Регистрация паттернов** — простой API для добавления отдельных паттернов ошибок или массовых списков для глобальной идентификации ошибок.

## Методы

### Управление хранилищем

- `getStorage(): ApiErrorStorage` — Возвращает внутренний синглтон-экземпляр хранилища ошибок.
- `add(item: ApiErrorStorageItem | ApiErrorStorageList): void` — Добавляет один или несколько паттернов ошибок в глобальное хранилище.

### Анализ

#### `getItem`

Анализирует сырой ответ Fetch и создает структурированный экземпляр `ApiErrorItem`. Это основной метод для обработки сбоев API.

**Параметры:**
- `method: ApiMethodItem` — HTTP-метод запроса.
- `response: Response` — Сырой объект ответа Fetch.

**Возвращает:** `Promise<ApiErrorItem>` — Структурированный объект ошибки, содержащий проанализированные детали.

```javascript
try {
  const response = await fetch('/api/user');
  if (!response.ok) {
    const errorItem = await ApiError.getItem(ApiMethodItem.get, response);
    console.error(errorItem.getMessage());
  }
} catch (e) {
  // Обработка сетевой ошибки
}
```
