--- title: Создание клиента description: Из чего состоит REST-клиент и какие части нужно подготовить перед использованием API. keywords: [rest, клиент, infrastructure, методы, openapi, get-хуки, swr] --- # Создание клиента REST-клиент — это infrastructure-модуль, через который проект работает с внешним REST API. На этом этапе нужно подготовить клиент сервиса: создать оболочку клиента, получить методы API и добавить GET-хуки для клиентских компонентов. ## Из чего состоит клиент REST-клиент состоит из трёх основных частей: 1. **Клиент** — самописная оболочка над транспортом. 2. **Методы** — сгенерированные из OpenAPI или написанные вручную вызовы API. 3. **GET-хуки** — SWR-обёртки для GET-запросов. Эти части живут в одном REST-модуле, потому что относятся к одному внешнему сервису. ## Клиент Клиент — ручной слой, который настраивает работу с API: `baseUrl`, заголовки, авторизацию, обработку ошибок и создание инстанса сервиса. Даже если методы генерируются из OpenAPI, `client.ts` остаётся ручным файлом проекта. `client.ts` — только сборочная точка клиента. В нём не размещаются DTO, `declare module`, `Extended`-типы, GET-хуки и бизнес-логика. ## Методы Методы описывают конкретные запросы к API. Они появляются одним из двух способов: - генерируются из OpenAPI в `generated/`; - создаются вручную в `methods/`. Подробности: - [Автогенерация из OpenAPI](./auto.md) - [Ручное создание](./manual.md) ## GET-хуки Для GET-запросов добавляются GET-хуки REST-клиента. Это прозрачные SWR-обёртки над GET-методами клиента. Они живут в `hooks/` этого же REST-модуля и нужны для использования данных в Client Components. GET-хуки именуются с префиксом `useGet`: `useGetPetList`, `useGetPetDetail`, `useGetCurrentUser`. Подробности: - [GET-хуки REST-клиента](./hooks.md) ## Структура модуля ```text src/infrastructure/{service-name}/ ├── client.ts # самописная оболочка и инстанс клиента ├── generated/ или methods/ # методы API ├── hooks/ # GET-хуки REST-клиента ├── types/ # DTO, типы API и расширения типов ├── errors/ # ошибки API, если нужны └── index.ts # публичный API ``` `index.ts` — единственная точка входа в REST-модуль для внешнего кода. ## Что делаем дальше 1. Создайте методы клиента: [Автогенерация из OpenAPI](./auto.md) или [Ручное создание](./manual.md). 2. Добавьте GET-хуки для GET-запросов: [GET-хуки REST-клиента](./hooks.md). 3. После создания клиента переходите к [Стратегиям получения данных](../strategies/index.md).