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

<Meta title='@dxtmisha/ru/functional-basic/Classes/ApiStatus - Управление статусом API'/>

# Класс ApiStatus

Класс, предназначенный для отслеживания и управления состоянием API-запроса. Он надежно хранит текущий HTTP-статус, сообщения об ошибках и тело ответа, позволяя приложениям реагировать на изменения в реальном времени с помощью абстракций состояния.

> `ApiStatus` является **вспомогательным классом**, предназначенным для отслеживания состояний запросов. В большинстве случаев рекомендуется взаимодействовать со статусом запроса через свойство `status` результата `ApiInstance` или глобальный цикл выполнения `Api`.

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

- **Централизованное состояние** — содержит всё, что связано с результатом вызова API: HTTP-статус, пользовательские тексты, необработанные данные ответа и сгенерированные сообщения.
- **Chainable API** — сеттеры возвращают `this`, что позволяет элегантно выстраивать цепочки изменений состояния.
- **Автоматическое извлечение сообщений** — интеллектуально пытается разобрать и извлечь человекочитаемые поля `message` напрямую из структурированных ответов сервера.

## Методы

### Действие

- `getResponse<T>(): T | undefined` — Возвращает необработанный объем данных из последнего успешного запроса.
- `getMessage(): string` — Возвращает сообщение сервера, извлеченное из успешного ответа, или сообщение, установленное вручную.

### Проверка

- `get(): ApiStatusItem | undefined` — Возвращает полный объект данных статуса.
- `getStatus(): number | undefined` — Возвращает код HTTP-статуса (например, `200`).
- `getStatusText(): string | undefined` — Возвращает текст статуса (например, `"OK"`).
- `getStatusType(): ApiStatusType | undefined` — Возвращает последний тип валидации статуса.
- `getError(): string | undefined` — Возвращает записанное сообщение об ошибке.

### Конфигурация

- `set(data: ApiStatusItem): this` — Устанавливает несколько полей статуса одновременно.
- `setStatus(status?: number, statusText?: string): this` — Устанавливает код и текст HTTP-статуса.
- `setError(error?: string): this` — Записывает строку сообщения об ошибке.
- `setLastResponse(response?: any): this` — Записывает ответ сервера и автоматически извлекает `message` и `status`, если они есть.
- `setLastStatus(status?: ApiStatusType): this` — Устанавливает пользовательский тип статуса API.
- `setLastMessage(message?: string): this` — Явно записывает сообщение.

## Типы

#### `ApiStatusItem`
Полное представление статуса запроса.
- `status?: number` — Код HTTP-статуса.
- `statusText?: string` — Текст HTTP-статуса.
- `error?: string` — Сообщение об ошибке.
- `lastResponse?: any` — Данные последнего ответа.
- `lastStatus?: ApiStatusType` — Последний тип статуса.
- `lastMessage?: string` — Последнее сообщение.
