TGViewer
Руслан Куянец | Reactify Руслан Куянец | Reactify @reactify_it · 6.44K subscribers
Post #1417 2.59K
👩‍💻 Инжектирование эндпоинтов в RTK Query и организация API в отдельных файлах

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

Организация базового API

Рекомендуется создать отдельный файл для базового API, который будет содержать общие настройки, такие как baseQuery, reducerPath и другие параметры, а также общие эндпоинты.


// baseApi.js
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

const baseApi = createApi({
reducerPath: 'baseApi',
baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
tagTypes: ['User', 'Post'], // Определяем типы тегов для инвалидации кэша
});

export default baseApi;


Создание эндпоинтов для различных сущностей

Теперь вы можете создать отдельные файлы для каждой сущности, добавляя в них необходимые эндпоинты и используя базовый API.


// userApi.js
import baseApi from './baseApi';

// injectEndpoints автоматически добавит эндпоинты к baseApi
const userApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
fetchUsers: builder.query({
query: () => 'users',
providesTags: ['User'], // Указываем, что этот запрос использует тег 'User'
}),
addUser: builder.mutation({
query: (newUser) => ({
url: 'users',
method: 'POST',
body: newUser,
}),
invalidatesTags: ['User'], // Инвалидируем кэш для 'User'
}),
}),
overrideExisting: false, // Не переопределяем существующие эндпоинты
});

export const { useFetchUsersQuery, useAddUserMutation } = userApi;
export default userApi;

Пример эндпоинтов для постов

// postApi.js
import baseApi from './baseApi';

// injectEndpoints автоматически добавит эндпоинты к baseApi
const postApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
fetchPosts: builder.query({
query: () => 'posts',
providesTags: ['Post'], // Указываем, что этот запрос использует тег 'Post'
}),
addPost: builder.mutation({
query: (newPost) => ({
url: 'posts',
method: 'POST',
body: newPost,
}),
invalidatesTags: ['Post'], // Инвалидируем кэш для 'Post'
}),
}),
overrideExisting: false, // Не переопределяем существующие эндпоинты
});

export const { useFetchPostsQuery, useAddPostMutation } = postApi;
export default postApi;


Инжектирование эндпоинтов в RTK Query позволяет вам создавать гибкую и масштабируемую архитектуру для работы с несколькими сущностями. Разделение логики API на отдельные файлы помогает поддерживать чистоту и порядок в коде, а использование базового API упрощает добавление новых эндпоинтов. Такой подход способствует улучшению читаемости и поддерживаемости вашего приложения.
  • 👍 23
  • ❤ 5
  • 🔥 4
More from @reactify_it
  1. Oct 2, 2026Что вообще для меня значит ИТ-АДАПТАЦИЯ? Это — РАБОТА ЛЮБОЙ ЦЕНОЙ. Сейчас такое время, ког…
  2. Oct 1, 2026А тем временем цены растут. Бесплатный ChatGPT, во-первых, как будто отупел, во-вторых, ли…
  3. Sep 30, 2026Ребята, если у вас уже есть опыт, но вы чувствуете, что он выглядит «непродающим» в резюме…
  4. Sep 29, 2026👩‍💻 ВСЯ инфраструктура за 30 минут: Kubernetes, ArgoCD, Grafana, CI/CD https://www.youtu…
  5. Sep 28, 2026В общем, что-то такое получилось 😁 Превью сделано нейронкой, но буду переделывать с помощ…
  6. Sep 25, 2026Делал видео-схему по инфраструктуре, а в итоге получилось по кубернетису 😁 До чего же я д…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →