Данный код представляет собой настройку и использование axios
для работы с HTTP-запросами в приложении. Axios
- это библиотека для выполнения HTTP-запросов, которая позволяет легко взаимодействовать с внешними API.
-
import axios from 'axios';
: Здесь мы импортируем библиотекуaxios
, которая позволяет совершать HTTP-запросы. -
import { USER_LOCALSTORAGE_KEY } from '@/shared/const/localstorage';
: Импортируем константуUSER_LOCALSTORAGE_KEY
из файла с константами для работы с локальным хранилищем. -
export const $api = axios.create({baseURL: __API__,});
: Создаем экземплярaxios
с указанным базовым URL.__API__
- это переменная окружения, которая должна быть предварительно определена в конфигурации сборки, и она будет использоваться как базовый URL для всех запросов, сделанных через этот экземпляр. -
$api.interceptors.request.use((config) => {...});
: Здесь мы используемinterceptors
axios
для добавления заголовкаAuthorization
к каждому запросу перед его отправкой на сервер. Этот интерцептор обрабатывает конфигурацию запроса перед его выполнением.Внутри функции обработчика запроса, мы проверяем, есть ли в конфигурации запроса свойство
headers
. Если свойствоheaders
существует, то мы получаем значение токена из локального хранилищаlocalStorage
по ключуUSER_LOCALSTORAGE_KEY
. Затем устанавливаем значение токена в заголовокAuthorization
в конфигурации запроса. Это позволит автоматически добавить токен в заголовок каждого отправляемого запроса. Если значение токена отсутствует или не найдено, то в заголовок будет установлена пустая строка. В конце функции, мы возвращаем обновленную конфигурацию запроса с добавленным заголовкомAuthorization
.
Данный код представляет собой определение службы (service) с использованием библиотеки @reduxjs/toolkit/query/react
, которая предоставляет удобные инструменты для работы с запросами. В данном случае, служба rtkApi создается с помощью функции createApi
, которой передается конфигурационный объект.
Импортируются необходимые зависимости из библиотеки @reduxjs/toolkit/query/react
, а также константа USER_LOCALSTORAGE_KEY
из файла с константами для работы с локальным хранилищем.
Затем определяется служба rtkApi
с использованием функции createApi
, которая принимает объект с несколькими свойствами:
-
reducerPath
: Указывает путь до редьюсера (reducer), где будут храниться данные из запросов. -
baseQuery
: Определяет базовый запрос, который используется для выполнения запросов. В данном случае, используется функцияfetchBaseQuery
с указанным базовым URL и функциейprepareHeaders
для подготовки заголовков перед отправкой каждого запроса. -
endpoints
: Здесь определяются конечные точки (endpoints) для запросов. В данном примере, пока что эти конечные точки не определены (пустой объект).
В функции prepareHeaders
, которая передается в fetchBaseQuery
, проверяется наличие токена в локальном хранилище localStorage
по ключу USER_LOCALSTORAGE_KEY
. Если токен существует, он добавляется в заголовок Authorization
. Это позволит автоматически добавить токен в заголовок каждого отправляемого запроса. Если значение токена отсутствует или не найдено, в заголовок будет установлена пустая строка.
В endpoints
пока что определены пустые объекты, что означает, что конечные точки для запросов пока не определены. Они могут быть добавлены позже с помощью функции builder
внутри объекта.