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

<Meta title='@dxtmisha/vi/functional-basic/Classes/ApiStatus - Quản lý trạng thái API'/>

# Lớp ApiStatus

Một lớp chuyên dụng để theo dõi và quản lý trạng thái của một yêu cầu API. Nó lưu trữ an toàn trạng thái HTTP hiện tại, thông điệp lỗi và nội dung phản hồi đã được phân tích cú pháp, cho phép các ứng dụng phản ứng với những thay đổi trong thời gian thực bằng cách sử dụng các trừu tượng trạng thái.

> `ApiStatus` là một **lớp bổ trợ** (auxiliary class), được thiết kế để theo dõi trạng thái yêu cầu. Trong hầu hết các trường hợp, bạn nên tương tác với trạng thái yêu cầu thông qua thuộc tính `status` của kết quả `ApiInstance` hoặc luồng thực thi `Api` toàn cục.

## Các tính năng chính

- **Trạng thái tập trung** — lưu giữ mọi thứ liên quan đến kết quả của một cuộc gọi API: trạng thái HTTP, văn bản tùy chỉnh, dữ liệu phản hồi thô và các thông điệp được tạo ra.
- **Chainable API** — các phương thức thiết lập (setters) trả về `this`, cho phép xâu chuỗi nhiều thay đổi trạng thái một cách thanh lịch.
- **Tự động trích xuất thông điệp** — cố gắng phân tích và lấy các trường `message` có thể đọc được trực tiếp từ các phản hồi có cấu trúc của máy chủ.

## Các phương thức

### Hành động

- `getResponse<T>(): T | undefined` — Trả về dữ liệu thô từ yêu cầu thành công cuối cùng.
- `getMessage(): string` — Trả về thông điệp máy chủ được lấy từ phản hồi thành công hoặc thông điệp được thiết lập thủ công.

### Kiểm tra

- `get(): ApiStatusItem | undefined` — Trả về đối tượng dữ liệu trạng thái đầy đủ.
- `getStatus(): number | undefined` — Trả về mã trạng thái HTTP (ví dụ: `200`).
- `getStatusText(): string | undefined` — Trả về văn bản trạng thái (ví dụ: `"OK"`).
- `getStatusType(): ApiStatusType | undefined` — Trả về loại xác thực trạng thái cuối cùng.
- `getError(): string | undefined` — Trả về thông điệp lỗi đã ghi lại.

### Cấu hình

- `set(data: ApiStatusItem): this` — Thiết lập nhiều trường trạng thái cùng một lúc.
- `setStatus(status?: number, statusText?: string): this` — Thiết lập mã và văn bản trạng thái HTTP.
- `setError(error?: string): this` — Ghi lại một chuỗi thông điệp lỗi.
- `setLastResponse(response?: any): this` — Ghi lại phản hồi máy chủ và trích xuất siêu dữ liệu liên quan.
- `setLastStatus(status?: ApiStatusType): this` — Thiết lập loại trạng thái API tùy chỉnh.
- `setLastMessage(message?: string): this` — Ghi lại một thông điệp một cách rõ ràng.

## Các kiểu dữ liệu

#### `ApiStatusItem`
Một đại diện đầy đủ của trạng thái yêu cầu.
- `status?: number` — Mã trạng thái HTTP.
- `statusText?: string` — Văn bản trạng thái HTTP.
- `error?: string` — Thông điệp lỗi.
- `lastResponse?: any` — Dữ liệu phản hồi thô.
- `lastStatus?: ApiStatusType` — Danh mục xác thực.
- `lastMessage?: string` — Thông điệp hiển thị đã trích xuất.
